这是一篇翻译的文章。原文:http://wtfjs.com/2013/07/18/array-ruse
[,,,].join() // ==> ",,"
最后一个逗号被当作多余的部分被移去了(仅在JavaScript中,不包括JSON,译者表示,低版本的IE也是如此,因此在低版本IE中输出的是",,,")。一旦最后一个逗号被移去,数组中仅有三个元素,且是undefined类型的。 当join函数被调用,参数为空时,使用","作为元素的分隔符生成在字符串中,所以只有两个分隔符",,"
所以 [1,2,3,]
等价于 [1,2,3]
. [,,,]
构建的数组,其实就是 [undefined,
. 你可以像下面代码这样,在数组的最后添加undefined声明,以显式地表示这个数组共有四个元素。
undefined, undefined,]
[,,,undefined].join() // ==> ',,,'