javascript - 使用点符号将数字传递到函数中

标签 javascript

如果我有一个对象和函数

var obj {
    "1234": {"example": "sample"},
    "5678": {"example": "sample"}
}    

function example(num, str) {
    if obj[num].hasOwnProperty(str) {
        //manipulate property
    }
    return obj;
}

然后调用该函数,

obj(1234, "example")

为什么我必须写 obj[num] 而不是 obj.num?点表示法不应该是可接受的吗,因为传递的值始终是整数并且周围没有引号,即 obj.1234 可以工作,但 obj."string"不行?

最佳答案

Why do I have to write obj[num] instead of obj.num?

因为obj[num]采用num(例如1234)并使用它value 作为属性名称,但 obj.num 使用 "num" (字面意思)作为属性名称。括号与点是 JavaScript 解析器如何知道您何时按字面给出属性名称(点表示法)或使用要使用其结果的表达式(括号表示法)。

<小时/>

(旁注:当然,当我们执行 foo[1] 时,我们字面上的意思是 foo 中的属性 1。但是从从解析器的 Angular 来看,我们在那里有效地使用了表达式。)

关于javascript - 使用点符号将数字传递到函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078628/

相关文章:

javascript - Lodash中如何将数组转换为对象?

php - jquery 类型错误 : Response is null

javascript - 基于 JavaScript 的 HMAC 安全性如何?

javascript - 通过使用按钮 React 设置状态来循环遍历数组中的对象

javascript - onkeyup 或 onkeypress javascript 事件问题 - 密码状态更新

javascript - 正则表达式向前看和向后看

javascript - 使用 jQuery 实现等高的列

javascript - Google map 信息窗口 open() panTo map 边缘

javascript - jQuery.parseHTML 在调用时产生错误

javascript - 用 jQuery 替换字符串的限制