我们知道,每次进入循环时,会重新计算variable的值。
那么,会不会重新计算value的值呢?特别当value的值在循环体中被修改时。
var arry=[12,34.56,true,"hello",null,undefined,{}];
var i=0,brry=[];
for (brry[i] in arry){
arry[i]= arry[i]+brry[i];
i++;
}
console.log(arry);
console.log(brry);
我们知道,每次进入循环时,会重新计算variable的值。
那么,会不会重新计算value的值呢?特别当value的值在循环体中被修改时。
var arry=[12,34.56,true,"hello",null,undefined,{}];
var i=0,brry=[];
for (brry[i] in arry){
arry[i]= arry[i]+brry[i];
i++;
}
console.log(arry);
console.log(brry);
这个是一定会的。javascript数组类型本质上是一个Object, 不管在哪里更改,都会改变它的值本身。加入你不确定,你可尝试写一个代码验证好了:
for(i in arry) {
array[i] = 'test'
console.log(arry)
}
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
题主的问题,可以抽象成:
像下面的代码:
事实证明是不会的,推理一下么,这里的
arr
在for (i in arr)
时,仅仅给所有的属性拍了个快照,所以上面代码可能等价于:没有查规范是怎么说的,但应该类似,这种问题测试一下就知道了,也没必要查规范,如果想查的话,自己动手查下吧。
另外,
for (brry[i] in arry){
这种用法我是第二次看到,虽然我知道是为了同时获得
index
,key
,value
但这个代码可读性我觉得不好,
brry
,i++
遍历数组的属性
完全可以了,即使用来遍历对象。
这样也是可以的,或者直接用
ES5
的数组操作方法也是可以的。