# 数据类型转换

作者: 多叉树;转载须注明出处

JS存在不同的数据类型, 这就需要一些方法将不同的数据类型做转换。

# 转数字类型

其他类型的值转换成数字, 这在工作中很常见。

有以下几种转换方式

  • Number 函数
  • parseInt 函数
  • parseFloat 函数

# Number

Number 函数可以将 其他类型转成 数字类型,具体示例如下

字符串转数字

<script>
    // 输出123
    console.log(Number("123"));
    // 输出: 12000; 支持科学计数法
    console.log(Number("12e3"));
   
    // 输出:123.3; 支持浮点数
    console.log(Number("123.3"));

    // 输出: NaN; 带有非数字字符无法转换
    console.log(Number("12.13zimu"));
  </script>

布尔转数字

<script>
    // 输出0, flase 对应 数字 0
    console.log(Number(false));
    // 输出1, true 对应数字 1
    console.log(Number(true));
</script>

undefined 和 null 转数字

<script>
  // 输出NaN
  console.log(Number(undefined));
  // 输出 0 ; 所以 要小心null, 如果涉及到 null 不能够转数字的情况,提前做好判断
  console.log(Number(null));
</script>

# parseInt 函数

只能将字符串转换成整型值(小数点后面的不要)

和 Number 的区别是 parseInt  如果是数字开头, 则数字字符部分能够被提取转换成数字类型

字符串转数字

<script>
    // 输出 123
    console.log(parseInt('123'));
    // 输出 123 , 保留整数部分
    console.log(parseInt('123.56'));
    //数字开头的保留整数部分
    console.log(parseInt('123.56是你吗'));
    // 字母开头的 输出 NaN
    console.log(parseInt('字符串开头123.56'));
    
</script>

除了字符, parseInt 函数无法将其他类型值转成普通数字,统一输出 NaN

<script>
  // 输出: NaN
  console.log(parseInt(true));
  console.log(parseInt(false));
  console.log(parseInt(undefined));
  console.log(parseInt(null));
</script>

# paseFloat 函数

字符串转浮点数字

<script>
		// 输出: 273.1212; 字符串转浮点数
    console.log(parseFloat("273.1212"));
		// 输出: 323.2323;  数字开头的,则提取数字字符部分,转换成数字
    console.log(parseFloat("323.2323后面跟着字符"));
    // 输出: NaN 首位是非数字字符的无法处理
    console.log(parseFloat("前面有字符21212"));
</script>

除了字符, paseFloat 函数无法将其他类型值转成普通数字,统一输出 NaN

<script>
  console.log(parseFloat(true));
  console.log(parseFloat(false));
  console.log(parseFloat(undefined));
  console.log(parseFloat(null));
</script>

# 转字符类型

其他类型转成字符类型可以用下面的方法

  • String 函数
  • toString 函数

# String 函数

使用此函数可以将其它类型的值转为String函数。

数字类型转字符串类型

<script>
     
// 输出 '123', 数字类型转成字符类型
console.log(String(123));
// 输出 'NaN'
console.log(NaN);

</script>

布尔类型转字符串类型


<script>
 // 输出 'true'
 console.log(String(true));
 //输出 'false'
 console.log(String(false));
</script>

undefined和null 转 字符串类型

<script>
	  // 输出 undefined
	  console.log(String(undefined));
	  //   输出 null
	  console.log(String(null));
</script>

任何类型的值,都可以原样转成字符串类型

# toString 函数

数字类型转字符串类型

<script>

    var num = 3;
		// 输出 3
    console.log(num.toString());
</script>

布尔类型转字符串类型

//输出 true
console.log(true.toString());

undefined和null 无法通过 toString 函数转成字符类型

# 转布尔类型

# Boolean 函数

数字类型转布尔

  • 数字0 和 NaN 转 布尔值为flase
  • 除了0 和 NaN 转成 true
<script>
  // 输出 true
  console.log(Boolean(123));
  // 输出true
  console.log(Boolean(-124));
  // 输出false
  console.log(Boolean(0));
  // 输出 true
  console.log(Boolean(NaN));

</script>

字符串类型转布尔

  • 空字符串转为false
  • 其他都是true
<script>
  
  // 输出 false
  console.log(Boolean(''));
  // 输出 true 带有空格的字符串不算空字符串
  console.log(Boolean(' '));
  // 输出 true
  console.log(Boolean('halou'));
  // 输出 true
  console.log(Boolean('false'));
  // 输出 true
  console.log(Boolean('false'));
</script>

undefined 和 null 转 布尔值

统一为false

<script>
	// 输出 false
  console.log(Boolean(undefined));
  // 输出 false
  console.log(Boolean(null));
</script>

编码过程中注意 undefined、null 和 和 ‘undefined’, ‘null’ 的区别, 前者是 代表 的是两个特殊值, 后者代表的是 字符串类型,他们转换 成 布尔类型 后的值完全不同。