为何JavaScript单元素数组可直接通过数组名访问元素?
JavaScript单元素数组在console.log格式化中的特殊行为解析
在JavaScript中运行以下代码时,会出现这样的现象:
var a = [10]; console.log("a = %d", a); // 输出结果:a = 10 var a = [10, 20]; console.log("a = %d", a); // 输出结果:a = NaN
为什么单元素数组直接用数组名配合%d格式化符能输出元素值10,而多元素数组却输出NaN?
原因解析
这是JavaScript的隐式类型转换规则导致的:
console.log的%d格式化符要求参数是数字类型,所以会自动把传入的参数尝试转换成数字。- 对于单元素数组
[10],转换为数字时会先调用数组的toString()方法,得到字符串"10",这个字符串可以直接解析为数字10,刚好匹配%d的要求,因此能正常输出元素值。 - 而多元素数组
[10, 20]调用toString()后得到的是字符串"10,20",这个包含逗号的字符串无法被解析为有效的数字,转换结果就是NaN,所以%d格式化后输出NaN。
内容的提问来源于stack exchange,提问作者syacer
相关产品推荐
相关产品推荐

