我想下面的代碼在ideone:Array.pop()亂數組的長度?
var a = [];
a[0] = 0;
a[5] = 5;
a[6] = undefined;
print("contents before popping:");
for(var e in a) print("\ta[", e, "] =", a[e]);
print("a.length =", a.length);
for (var i = 0; i < a.length; i++)
print("\ta.hasOwnProperty(", i, ") =", a.hasOwnProperty(i));
print("popping -->", a.pop());
print("popping -->", a.pop());
print("contents after popping:");
for(var e in a) print("\ta[", e, "] =", a[e]);
print("a.length =", a.length);
for (var i = 0; i < a.length; i++)
print("\ta.hasOwnProperty(", i, ") =", a.hasOwnProperty(i));
輸出變爲如下:
contents before popping:
a[ 0 ] = 0
a[ 5 ] = 5
a[ 6 ] = undefined
a.length = 7
a.hasOwnProperty(0) = true
a.hasOwnProperty(1) = false
a.hasOwnProperty(2) = false
a.hasOwnProperty(3) = false
a.hasOwnProperty(4) = false
a.hasOwnProperty(5) = true
a.hasOwnProperty(6) = true
popping --> undefined
popping --> 5
contents after popping:
a[ 0 ] = 0
a.length = 5
a.hasOwnProperty(0) = true
a.hasOwnProperty(1) = false
a.hasOwnProperty(2) = false
a.hasOwnProperty(3) = false
a.hasOwnProperty(4) = false
在我的JavaScript的書(當然,Crockford的),我讀了數組的長度爲最大的計算所有屬性的數值。那麼,爲什麼它的長度是5時,它最大的數字屬性是0?謝謝!
我一直在通過這個小提琴來演示Array.length何時不可靠,除了你的例子。 http://jsfiddle.net/6WrkT/1/ – 2013-06-18 23:16:39