+new Array(017) 输出?( )
此题考查 JavaScript 类型转换之转数字,记住两点:转换的方法和转换的规则
转换的方法有两种:Number() 和一元 + ,二者完全等价。后者用得更多,因为比较方便。
var x = '50';
Number(x); // 50
+x; // 50
转换的规则也很简单:能转数字的转数字,不能转数字转成 NaN。不过要注意 null 和 undefined。
// 什么叫做能转数字?凭直觉。如果你的直觉还不够,最好在 console 控制台跑一下下面的例子
+'' // 0
+'123' // 123
+'123a' // NaN
+[] // 0
+[12] // 12
+[12, 34] // NaN
+true // 1
+false // 0
+undefined // NaN
+null // 0
+{} // NaN
为什么说重点注意 null
和 undefined
转数字的情况呢。首先明确一下 undefined
和 null
的区别:
undefined
: 当声明一个变量未初始化时,其值默认为 undefined
; 当试图访问对象上不存在的属性时, 得到 undefined
,当函数没有显示定义返回任何东西时,它返回 undefined
。我认为,undefined
是为了处理意料之外的情况。 null
: 它表示一个空对象,var obj = null
表示变量 obj 没有引用任何内存,它是意料之中的空对象。 so, undefined
表示意料之外,转数字时得 NaN, null
表示意料之中,转数字时得 0。