繁体   English   中英

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

[英]How can I refer to an object that is defined in a javascript for statement?

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

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

但是,当for语句本身定义了“b”时,有没有办法做到这一点? 例如

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为全局。 有没有办法在不创建全局的情况下访问这些值?

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

for-in语句规范清楚地表明,不,你不能以你想要的方式访问对象而不在其他变量中引用它。

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

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

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

您可以使用IIFE包装它以防止创建全局变量。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM