问答详情
源自:3-7 二维数组

为什么声明变量第一个是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;   // 赋值,每个数组元素的值为i+j

   } }

虽然知道这是正确的,

但为什么不是两个声明都有

为什么var myarr[i],而不是var myarr[j]/[q]/[k]呢

求大神给菜鸟一个好理解记忆的说法


提问者:慕丝5359371 2016-12-20 20:02

个回答

  • JUST_4_IT
    2016-12-20 20:47:28
    已采纳

    为了能让你更好的理解,我重新描述一下这个过程,

    第一句是在声明一个一维数组myarr,在内存中开辟出一块空间来等你给赋与具体的值;

    因为题给数组长度是3,所以for循环三次,遍历myarr数组中每一个元素myarr[0].myarr[1],myarr[2];

    所以,程序中第三句也可以理解成在遍历的同时创建新的一维数组并赋值给myarr数组的每一个元素myarr[0].myarr[1],myarr[2];

    这样的话,myarr数组中的每一个元素也是数组形式的了,就变成了二维数组(数组中的元素还是数组),就像myarr是一个大盒子,里面又被装进了三个小盒子,小盒子里面才是具体的数字,这样能明白了吧?

    第二个问题:为什么不是var myarr[j]/[q]/[k]

    这个完全可以是j/q/k,方括号里的变量代表的是数组中的索引,也就是第几个元素,大家都习惯了用i表示而已,就像这个数组名字一样,你也可以定义成yourarr,没有影响的.

    就这样!