在 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 为全局变量。有没有办法在不创建全局的情况下访问这些值?
我意识到还有其他可能更好的方法可以做到这一点(例如,在循环外定义数组)。出于好奇,我问这是否可行。
最佳答案
specification for the for-in
statement明确指出,不,如果没有在其他变量中引用该对象,您将无法以您希望的方式访问该对象。
按照这些步骤,您可以看到在 for
循环的语句部分中,关于对象的唯一已知信息是下一个可枚举属性的名称,如步骤 6a 中所定义:
Let P be the name of the next property of obj whose [[Enumerable]] attribute is true. If there is no such property, return (normal, V, empty).
要访问有关该对象的任何其他内容,您将需要自己对它的引用。
关于javascript - 如何引用在 javascript for 语句中定义的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548020/