在學習《JavaScript權威指南》第六版的第7.1節中透過數組直接量創建數組時,我們可以不給數組的某個元素賦值,它就會使undefined。雖然是undefined,但我們呼叫數組物件的length屬性時undefined也會導致length加1。有以下的四種情況:
var undef0 = [,,]; var undef1 = [1,,]; var undef2 = [,1,]; var undef3 = [,,1]; console.log(undef0.length); console.log(undef1.length); console.log(undef2.length); console.log(undef3.length);
我們可以猜一下四個console.log輸出的長度各是多少,之前我一定會猜都是3。實際結果如下所示:
這是為什麼呢,答案就是:數組直接量的語法允許有可選的結尾的逗號,故[,,]、[1,,]、[,1,]這三種情況JS引擎會認為最後一個逗號是結尾的逗號,所以就認為只有兩個元素,而[,,1]這種情況人為的給最後一個逗號後面又添加了一個元素,所以最後一個逗號就不是結尾了,所以我們就能想到[,,1,]的長度還是3。