javascript - 如何引用在 javascript for 语句中定义的对象?

标签 javascript foreach

在 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/

相关文章:

java - 'for' 循环可替换为 'foreach'

php - Foreach 哎呀! `SELECT` 感到困惑

amazon-web-services - Terraform 嵌套 for_each aws_acm_certificate domain_validation_options

Javascript 代理和 With 语句

javascript - 文本区域的正则表达式

php - 如何整理多个 if 条件以提高可读性?

Javascript:将对象从 foreach 推送到数组

javascript - 如何显示/隐藏带有复选框和 javascript 的 div?

javascript - 映射对象键: value pair to array of object arrays for JSON

javascript - 无法使用 XMLHttpRequest 从 rest api 获得响应