类型转换

2018-02-24  本文已影响0人  YangJeremy

我们能够从代码中看出哪些地方是显式强制类型转换,而隐式强制
类型转换则不那么明显,例如:

var a = 42;
var b = a + ""; // 隐式强制类型转换
var c = String( a ); // 显式强制类型转换

数组的默认 toString() 方法经过了重新定义,将所有单元字符串化以后再用 "," 连接起来:

var a = [1,2,3];
a.toString(); // "1,2,3"

toString() 可以被显式调用,或者在需要字符串化时自动调用。

JSON字符串化

JSON.stringify( 42 ); // "42"
JSON.stringify( "42" ); // ""42""(含有双引号的字符串)
JSON.stringify( null ); // "null"
JSON.stringify( true ); // "true"
JSON.stringify( undefined ); // undefined
JSON.stringify( function(){} ); // undefined
JSON.stringify(
[1,undefined,function(){},4]
); // "[1,null,null,4]"
JSON.stringify(
{ a:2, b:function(){} }
); // "{"a":2}

ToNumber

其中 true 转换为 1, false 转换为 0。 undefined 转换为 NaN, null 转换为 0

valueOf()

先看这段代码:

var obj = { p: 1 };
obj + 2 // "[object Object]2"

这段代码中,对象obj先转成原始类型的值[object Object], 再加上2就得到以上的结果。

var obj = { p: 1 };
obj.valueOf().toString() // "[object Object]"
上一篇下一篇

猜你喜欢

热点阅读