# 数据类型-类型转换
# 转换为数字
# Number()
使用Number
函数,可以将任意类型的值转化成数值。
原始类型值 Number
函数将字符串转为数值,要比parseInt
函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN
。
对象
简单的规则是,Number
方法的参数是对象时,将返回NaN
,除非是包含单个数值的数组。
console.log(Number("123")); // 123
console.log(Number("123b")); // NaN
console.log(Number("123n")); // NaN
console.log(Number({})); // NaN
console.log(Number([])); // 0
console.log(Number([1])); // 1 ???
console.log(Number([1, 2])); // NaN
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN ???
# parseInt()
方法用于将字符串转为整数。如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
parseInt("8a"); // 8
parseInt("12"); // 12
parseInt("12.34"); // 12
parseInt("15e2"); // 15
parseInt("15px"); // 15
parseInt("abc"); // NaN
parseInt(".3"); // NaN
parseInt(""); // NaN
parseInt("+"); // NaN
parseInt("+1"); // 1
parseInt
方法还可以接受第二个参数(2 到 36 之间),表示被解析的值的进制,返回该值对应的十进制数
前面说过,如果 parseInt 的第一个参数不是字符串,会被先转为字符串。这会导致一些令人意外的结果。
# parseFloat()
parseFloat
方法用于将一个字符串转为浮点数。
如果字符串符合科学计数法,则会进行相应的转换。
如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN
。
尤其值得注意,parseFloat
会将空字符串转为NaN
。
# num - str
console.log("1" - "1"); // 0
console.log("1" - 1); // 0
console.log(1 - "1"); // 0
console.log(1 - 1); // 0
# 转换为字符串
# String()
String
函数可以将任意类型的值转化成字符串
undefined:转为字符串"undefined"
。
null:转为字符串"null"
。
布尔值:true
转为字符串"true"
,false
转为字符串"false"
。
对象 返回一个类型字符串 数组 返回该数组的字符串形式。
String({ a: 1 }); // "[object Object]"
String([1, 2, 3]); // "1,2,3"
# Number().tostring()
此方法能把 null 和 undefined 转换为字符串
console.log(Number(123).toString()); // '123'
console.log(Number(null).toString()); // '0'
console.log(Number(undefined).toString()); // 'NaN'
# num + str
console.log("1" + 1); // 11
console.log(1 + "1"); // 11
# 转换为布尔型
# Boolean()
代表空、否定的值会被转化为 false
。如false
, ''
, 0
,-0
, 0n
, NaN
, null
, undefined
。其他的值均为 true
。
console.log(Boolean(false));
console.log(Boolean(""));
console.log(Boolean(0));
console.log(Boolean(-0));
console.log(Boolean(0n));
console.log(Boolean(NaN));
console.log(Boolean(null));
console.log(Boolean(undefined));
# isNaN()
isNaN 方法 可以用来判断一个值是否为 NaN。
console.log(NaN === NaN); // false
console.log(isNaN(NaN)); // true
# isFinite()
isFinite 方法 返回一个布尔值,表示某个值是否为正常的数值。
# Array.isArray()
Array.isArray 方法 可以用来判断一个值是否为 Array
let a = document.getElementsByTagName("a"); // HTMLCollection
console.log(Array.isArray(a)); // false
# Falsy
falsy 值(虚值)是在 Boolean 上下文中认定为 false 的值。
JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换 (Type Conversion ) 将值转换为布尔值,例如条件语句和循环语句。
在 JavaScript 中只有 8 个 falsy 值。它们分别是
false
''
,""
0
-0
0n
NaN
null
undefined
。