先看两段代码,我们通过for循环定义一个数组arr1,然后要把arr1依次放入数组arr2里面。
开始,我们定一个这两个数组变量,然后通过for循环为arr1赋值(因为是示例,我们只在里面添加一个元素arr1[0])。
[javascript]
var arr2 = []; //存放_arr的二维数组
var arr1 = []; //一维数组
for(i=0;i<3;i++){
arr1[0]=i;
arr2.push(arr1);
}
console.log(arr2 + ""); //[[2],[2],[2]]
[/javascript]
上面的代码我们把arr1的定义放在了for循环外面,下面这段代码我们在每次循环开始的时候重新定义arr1:
[javascript]
var arr2 = []; //存放_arr的二维数组
for(i=0;i<3;i++){
var arr1 = []; //一维数组
arr1[0]=i;
arr2.push(arr1);
}
console.log(arr2 + ""); //[[0],[1],[2]]
[/javascript]
我们发现,两个代码执行结果是不一样的,第一个输出的arr2=[[2],[2],[2]],第二个输出arr2=[[0],[1],[2]]。
在第一个里面,我们push arr1到arr2之后里面的变量arr1[0]值是i,还会跟随for循环变化。
在第二个里面,arr1被重新定义,之前的arr1[0]就被转换成常量了?
神奇。
您的赞助将会支持作者创作及本站运维
发表评论