为什么JavaScript中未定义元素数组上的`join()`返回的元素少1个?
我最初是在查找Array.prototype.toString(). 从规范中我意识到这个调用.join()。但我不明白带有未定义元素的数组的输出。
[,,,].toString()返回",,"。但我预料到了",,,"。序列化中似乎缺少 1 个元素。这里发生了什么事?
回答
因为在 JavaScript 中,如果最后一个,(尾随逗号)后面没有任何内容,则会被忽略。
console.log([1,].length);
// -> 1
console.log([1,,].length);
// -> 2
因此,当您执行 时[,,,],最后一个,被忽略。因此长度仅为3.
console.log([,,,].length);
// -> 3
当你加入一个带有n项目的数组时,你会得到n-1逗号。因此,你得到的结果。
THE END
二维码