JavaScript "x in obj": obj. x 未定义?

标签 javascript syntax for-in-loop

以下代码:

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/

相关文章:

Javascript 弹出和关闭

javascript - 自定义 map 类型 : repeating maps and markers. 如何向 map 添加填充?

javascript - 使用应用程序脚本在确定列的最后一行插入值

syntax - 有人可以为我解释一下吗 - for (int i = 0; i < 8; i++)

javascript - 在对象内部使用 for-in 循环来访问其成员

javascript - 在 for-in 循环中访问前一个键/值

javascript - 如何通过选择标签更改日期选择器

css - 如何处理css中的两个元素

java - Java 中的 transient

JavaScript Closure - 推送到数组的匿名函数的奇怪引用功能