以下代码:
var obj = {uname:"OdO", age:"22"};
alert(obj.uname);
结果:
OdO
现在,在 for..in
语句中使用相同的概念:
for (x in obj) {
document.write(obj.x+"<br>");
}
我希望它打印以下内容:
OdO
22
但它打印:
undefined
undefined
而要在元素中实现打印循环,应该写成这样的数组元素:
for (x in obj) {
document.write(obj[x]+"<br>");
}
那么,为什么第一个语法不起作用,但它在 for..in
语句之外起作用?
最佳答案
当您编写 obj.x
时,这实际上是在 obj
中查找名为“x”的属性 — 就像 obj.size
一样查找名为“大小”的属性。 x
没有为您的对象定义,所以它什么也没有。正确的写法 — obj[x]
— 使用变量 x
来查找对象中的属性。括号语法使用括号内的值来查找属性,而点语法将属性名称转换为字符串。所以这两个是等价的:
obj.x
obj["x"]
因此,当您在 obj.
之后编写 x
时,它会将 x
转换为字符串 — 它不再是变量。
关于JavaScript "x in obj": obj. x 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234028/