正常狀況下,數組的默認key爲數組,如:json
var arr=["ta","tt","te"];console.log(arr[1]); "tt"
當key爲非直接數字時,兩種狀況,一種爲數字形式字符串,一種爲非數字形式字符串:數組
①、數字形式字符串:數字形式字符串,默認將字符串轉化爲對應的數字下標,其餘爲定義項爲undefinedspa
var arr=[];arr["2"]="team2";arr[4]="team4";console.log(arr); [2: "team2", 4: "team4"] var arr=[];arr["2"]="team2";arr[4]="team4"; console.log(arr.length); 5 var arr=[];arr["2"]="team2";arr[4]="team4"; for(var key in arr){console.log(arr[key])}; team2 team4 var arr=[];arr["2"]="team2";arr[4]="team4";console.log(arr[0]); undefined
②、當爲非數字形式字符串時,這時候,實際arr已經不是一個數組,而是一個json對象{key1:"team1",key2:"team2"} 這個json對象的默認length爲0(默認屬性)code
var arr=[];arr["key1"]="team1";arr["key4"]="team4"; console.log(arr.length); 0 var arr=[];arr["key1"]="team1";arr["key4"]="team4"; console.log(arr); [key1: "team1", key4: "team4"] var arr=[];arr["key1"]="team1";arr["key4"]="team4"; console.log(arr[0]); undefined var arr=[];arr["key1"]="team1";arr["key4"]="team4"; console.log(arr[key1]); ReferenceError: key1 is not defined var arr=[];arr["key1"]="team1";arr["key4"]="team4"; console.log(arr["key1"]); team1 var arr=[];arr["key1"]="team1";arr["key4"]="team4"; console.log(arr.key1); team1
因此,若是定義var arr=[];arr["999"]="girl",系統默認將「999」轉化成999,則數組length爲1000,前面的999個數組元素佔用系統內存,若是須要不佔用系統內存對象
能夠寫成json形式,如:blog
var arr=[];arr["_"+999]="girl";console.log(arr); [_999: "girl"]
實際獲取能夠寫成:內存
var arr=[];arr["_"+999]="girl";console.log(arr["_"+999]); girl