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

时间:2019-03-10 07:18:49

标签: 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

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

2 个答案:

答案 0 :(得分:4)

将数组隐式强制转换为字符串时,它将在数组上调用.join(,)

15.4.4.2 Array.prototype.toString ( )

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

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

15.4.4.5 Array.prototype.join (separator)

  
      
  1. 如果element0未定义或为null,则将R设为空String;否则,使R为ToString(element0)。
  2.   

使用undefinednull以外的其他值时,元素将只调用toString

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

答案 1 :(得分:2)

String([])等效于[].toString()toString()方法的作用是使用逗号join()个元素。

nullundefined根据定义将它们转换为空字符串

  

如果元素未定义或为null,则将其转换为空字符串。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join#Description