如果我有一个对象和函数
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/