為什么聲明變量第一個是var myarr不是var myarr[i]
var myarr=new Array();?//先聲明一維?
for(var i=0;i<3;i++){ ? //一維長度為3
? ?myarr[i]=new Array(); ?//再聲明二維?
? ?for(var j=0;j<5;j++){ ? //二維長度為5
? ?myarr[i][j]=i*j; ? // 賦值,每個數(shù)組元素的值為i+j
? ?} }
雖然知道這是正確的,
但為什么不是兩個聲明都有
為什么var myarr[i],而不是var myarr[j]/[q]/[k]呢
求大神給菜鳥一個好理解記憶的說法
2016-12-20
為了能讓你更好的理解,我重新描述一下這個過程,
第一句是在聲明一個一維數(shù)組myarr,在內(nèi)存中開辟出一塊空間來等你給賦與具體的值;
因?yàn)轭}給數(shù)組長度是3,所以for循環(huán)三次,遍歷myarr數(shù)組中每一個元素myarr[0].myarr[1],myarr[2];
所以,程序中第三句也可以理解成在遍歷的同時創(chuàng)建新的一維數(shù)組并賦值給myarr數(shù)組的每一個元素myarr[0].myarr[1],myarr[2];
這樣的話,myarr數(shù)組中的每一個元素也是數(shù)組形式的了,就變成了二維數(shù)組(數(shù)組中的元素還是數(shù)組),就像myarr是一個大盒子,里面又被裝進(jìn)了三個小盒子,小盒子里面才是具體的數(shù)字,這樣能明白了吧?
第二個問題:為什么不是var myarr[j]/[q]/[k]
這個完全可以是j/q/k,方括號里的變量代表的是數(shù)組中的索引,也就是第幾個元素,大家都習(xí)慣了用i表示而已,就像這個數(shù)組名字一樣,你也可以定義成yourarr,沒有影響的.
就這樣!