如何引用javascript for statement中定义的对象?

时间:2015-11-05 15:06:09

标签: javascript foreach

在Javascript中,相当于" foreach"循环是:

for(a in b){
    // b[a] is now one of the elements of the array b
}

但是当" b"有没有办法做到这一点。是在for语句本身中定义的? e.g。

for(a in {'a' : 'alpha', 'b' : 'bravo', 'c' : 'charlie'}){
    // can I access the alpha, bravo and charlie values here?
}

...

我刚才写到这个我可以使用:

for(var a in b = {'a' : 'alpha', 'b' : 'bravo', 'c' : 'charlie'}){
    // b[a] will now give me the alpha, bravo, charlie values
}

但如果我试图宣布" b"用:

for(var a in var b = {...})

我收到语法错误。

这意味着我可以这样做,但只能通过隐式声明b为全局。有没有办法在不创建全局的情况下访问这些值?

我意识到还有其他可能更好的方法(例如在循环外定义数组)。我好奇地问这是否可行。

2 个答案:

答案 0 :(得分:4)

specification for the for-in statement表明,不,你不能以你想要的方式访问对象而不在其他变量中引用它。

按照这些步骤,您可以看到for循环的语句部分中唯一知道该对象的是下一个可枚举属性的名称,如步骤6a中所定义:

  

设P是[[Enumerable]]属性为true的obj的下一个属性的名称。如果没有这样的属性,则返回(正常,V,空)。

要访问有关该对象的任何其他内容,您需要自己引用它。

答案 1 :(得分:-1)

您可以使用IIFE对其进行换行,以防止创建全局变量。

(function () {
    var b = {'a' : 'alpha', 'b' : 'bravo', 'c' : 'charlie'};
    for(var a in b){
        console.log(b[a]);
    }
})();