代码之家  ›  专栏  ›  技术社区  ›  Maheer Ali

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

  •  2
  • Maheer Ali  · 技术社区  · 7 年前

    //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

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

    2 回复  |  直到 7 年前
        1
  •  5
  •   CertainPerformance    7 年前

    当数组被隐式强制为字符串时,它调用 .join(,) 在阵列上:

    15.4.4.2 Array.prototype.toString ( )

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

    .join 方法 明确地 强制null和undefined为空字符串:

    15.4.4.5 Array.prototype.join (separator)

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

    undefined null toString 去拜访它。

    无效的 未定义 这是两个特殊的例外,与通常的将元素强制为字符串的规则不同。

        2
  •  2
  •   zmag    7 年前

    String([]) 相当于 [].toString() . 还有什么 toString() 方法是 join() 带有逗号的元素。

    null , undefined 它们被转换为空字符串 根据定义。

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

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