String()的奇怪行为

我今天只是在处理一些代码,我注意到当我运行String(null)or 时String(undefined),我分别得到nullundefined。但是,当我检查我得到的值时String([null, undefined]),我发现","与预期的 Result 相比,它给了我null,undefined。有没有人知道为什么会这样?由于我没想到String数组上的构造函数会出现这种行为,因为据我所知,构造函数只是简单地将每个元素的值以逗号分隔。

回答

String(x)调用x.toString()

nullundefined值是通过由空串表示阵列toString(),因为它调用Array.prototype.join()(‘如果元件未定义或空,让下一个是空字符串’):

> [null, undefined].toString()
","
> [null, null, null, null].toString()
",,,"

  • 这实际上是调用 `join()` 的 `Array#toString()` 方法的产物,该方法将 `undefined`、`null` 和空数组 `[]` 强制转换为空字符串。请参阅:[加入](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join#description) 或 [规范](https://tc39.es/ ecma262/multipage/indexed-collections.html#sec-array.prototype.tostring)

以上是String()的奇怪行为的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>