数据类型转换(未完成...)

了解

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
点运算符
其他...

(未完成...)

你可能感兴趣的:(数据类型转换(未完成...))