为什么对象属性赋值不受限于(for in)循环?任何用例?

时间:2012-01-02 17:39:43

标签: javascript

for in循环将对象属性分配给左侧变量。

不应仅用于“循环体内”。我不知道永久分配(显然在完成脚本之前)有意义吗?

有没有人看到用例?

下面的脚本将对象属性复制到数组。

var obj = {a:1,b:2};
var arr = [];
var x = 0;

for(arr[x++] in obj) // shouldn't be temporary assignment?
{}                   // empty body

for(new_values in arr){    
console.log(arr[new_values])  // i can fetch values here.
}

//a
//b

2 个答案:

答案 0 :(得分:4)

  

为什么对象属性赋值不受限于(for in)循环?

因为它不受任何限制。 JavaScript变量很简单。他们唯一的范围是功能级别,然后才会使用var关键字。

答案 1 :(得分:2)

这是分配JavaScript。但是这个代码也是对......循环的滥用。

for(var temp in obj) {
    // do something with temp;
}

是传统形式,但您的样本是合法的。

注意:对于阵列中的... in循环会产生意外结果。