Mah*_*Ali 3 javascript arrays variables
下面的片段解释了这个问题
//Outside array
console.log(String(undefined)); //undefined
console.log(String(null)); //null
console.log(String(5.55)); //5.55
//inside array
console.log(String([undefined])); // ""
console.log(String([null])); // ""
console.log(String([5.55])); //5.5
Run Code Online (Sandbox Code Playgroud)
为什么null
和undefined
在数组内部和外部转换为字符串时显示不同的行为。
当数组被隐式强制转换为字符串时,它会调用.join(,)
该数组:
15.4.4.2 Array.prototype.toString ( )
- 让 func 是调用带有参数“join”的数组的 [[Get]] 内部方法的结果。
该.join
方法专门将null 和 undefined 强制为空字符串:
15.4.4.5 Array.prototype.join(分隔符)
- 如果 element0 未定义或为空,则令 R 为空字符串;否则,令 R 为 ToString(element0)。
使用undefined
or以外的值null
,元素只会toString
调用它。
换句话说,null
和undefined
是将元素强制为字符串的通常规则的两个特殊例外。