Javascript在for循环外定义变量的区别,神奇的Javascript

先看两段代码,我们通过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]就被转换成常量了?

神奇。

您的赞助将会支持作者创作及本站运维

发表评论


TOP