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

2024-05-10

如果我有一个对象和函数

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" 不行?


为什么我必须写 obj[num] 而不是 obj.num?

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


(旁注:当然,当我们这样做时foo[1],我们字面上的意思是财产1 in foo。但从解析器的角度来看,我们在那里有效地使用了表达式。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用点符号将数字传递到函数中 的相关文章

随机推荐