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

Ahm*_*eed 1 javascript syntax for-in-loop

以下代码:

var obj = {uname:"OdO", age:"22"};  
alert(obj.uname);
Run Code Online (Sandbox Code Playgroud)

结果是:

OdO 
Run Code Online (Sandbox Code Playgroud)

现在,在for..in声明中使用相同的概念:

for (x in obj) {
    document.write(obj.x+"<br>");
}
Run Code Online (Sandbox Code Playgroud)

我希望它打印以下内容:

OdO  
22 
Run Code Online (Sandbox Code Playgroud)

但它打印:

undefined  
undefined
Run Code Online (Sandbox Code Playgroud)

要在元素中实现打印循环,它应该写成如下的数组元素:

for (x in obj) {
    document.write(obj[x]+"<br>");
} 
Run Code Online (Sandbox Code Playgroud)

那么,为什么第一个语法不起作用,但它是否在for..in语句之外?

Chu*_*uck 8

当你写的时候obj.x,这实际上会查找名为"x"的属性obj- 就像obj.size查找名为"size"的属性一样.x没有为您的对象定义,因此它没有任何结果.编写它的正确方法obj[x]- 使用变量 x在对象中查找属性.括号语法使用括号内的值来查找属性,而点语法将属性名称转换为字符串.所以这两个是等价的:

obj.x
obj["x"]
Run Code Online (Sandbox Code Playgroud)

所以当你写完x之后obj.,它会把它转换x成一个字符串 - 它不再是一个变量了.