了解
js有很多场景都会发生自动转换,所以有必要了解转换规则。
转换规则
转数值
//对象:
先调用valueOf,如返回对象就调用toString,再返回对象就报错。
//其他
Number('324') // 324
Number('324abc') // NaN
Number('') // 0
Number(true)//1
Number(false)//0
Number(undefined) // NaN
Number(null) // 0
Number(NaN) // NaN
Number(Infinity)//Infinity
转字符串
//对象:
先调用toString,如返回对象就调用valueOf,再返回对象就报错。
//其他
String(123) // "123"
String(-123) // "-123"
String(NaN)//"NaN"
String(Infinity)//"Infinity"
String(true) // "true"
String(false) // "false"
String(undefined) // "undefined"
String(null) // "null"
转布尔值
//以下值为false,其他皆是true
undefined
null
-0
0或+0
NaN
''(空字符串)
转对象
//字符串
将每个字符作为对象的属性,并添加length属性,这些属性都是只读属性。
Object('abc')//String {0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"}
//其他
只有一个供valueOf方法访问的内部属性[[PrimitiveValue]],该属性指向原始值。除了null,undefined是空对象。
//继承
转对象后会自动继承原始值类型对象原型。
自动转换场景
if
for...of
点运算符
其他...
网友评论