一 結論
Javascript數組索引值的範圍爲0到2的32次方。
對於任意給定的數字下標值,如果不在此範圍內,js會將它轉換爲一個字符串,並將該下標對應的值作爲該數組對象的一個屬性值而不是數組元素,
例如array[-1] = "yes" 其實就相當於給array對象添加了一個名爲-1的屬性,屬性值爲yes。
如果該下標值在合法範圍內,則無論該下標值是數字還是數字字符串,都一律會被轉化爲數字使用,即 array["100"] = 0 和 array[100] = 0 執行的是相同的操作。
二 字符串索引
當我們試圖爲一個js數組添加字符串下標的時候,其實就相當於爲該數組對象添加了一個屬性,屬性名稱就是我們所謂的“字符串下標”。
由於爲數組對象添加屬性不會影響到同爲該對象屬性的length的值,因此該數組的length一直等於零。
1
2
3
4
5
6
|
var array = []; array[ "a" ] = "hello" ; array[ "b" ] = "world" ; array[ "c" ] = "yes" ; console.log(array); console.log( "length: " + array.length); //0 |
三 數值索引
當我們試圖爲一個js數組添加數值下標或者數字字符串下標的時候,效果一樣都會影響數組的length。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
//添加數值下標 var array = []; array[ "a" ] = "hello" ; array[ "b" ] = "world" ; array[ "c" ] = "yes" ; array[100] = 100; console.log(array); console.log( "length: " + array.length); //101 //添加字符串數字下標 var array = []; array[ "a" ] = "hello" ; array[ "b" ] = "world" ; array[ "c" ] = "yes" ; array[ '100' ] = 100; console.log(array); console.log( "length: " + array.length); //101 |