将数组转换为字符串时,数组中的“null”和“undefined”在哪里?

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)

为什么nullundefined在数组内部和外部转换为字符串时显示不同的行为。

Cer*_*nce 5

当数组被隐式强制转换为字符串时,它会调用.join(,)该数组:

15.4.4.2 Array.prototype.toString ( )

  1. 让 func 是调用带有参数“join”的数组的 [[Get]] 内部方法的结果。

.join方法专门将null 和 undefined 强制为空字符串:

15.4.4.5 Array.prototype.join(分隔符)

  1. 如果 element0 未定义或为空,则令 R 为空字符串;否则,令 R 为 ToString(element0)。

使用undefinedor以外的值null,元素只会toString调用它。

换句话说,nullundefined是将元素强制为字符串的通常规则的两个特殊例外。