当我写
Fragment
它运作正常!
但是,如果我将for (var x in object) {
console.log(object[x])
}
替换为object[x]
则不起作用,则会返回object.x
。
在undefined
循环之外的object[propriety1]
和object.propriety1
的控制台记录对两者都适用。
任何解释?!
for in
答案 0 :(得分:1)
x
只是for
循环 x
的值将是" property1",然后" property2"然后" property3"随着for循环的进展
object[x]
表示"获取object
的属性,其名称包含在变量x
"中。它相当于object["property1"]
等
object.x
没有意义,除非你的对象有一个名为" x"
答案 1 :(得分:0)
当你有一个for循环时,它会给你一个对象的所有键。
object [key]是获取各自值的语法
var object = {
propriety1 : "value1",
propriety2 : "value2",
propriety3 : "value3"
}
for (var x in object){
console.log(x);// gives you keys of object
console.log(object[x]);//syntax to get value corresponding to a key
}
console.log(object.propriety1);

答案 2 :(得分:0)
这个原因很简单实际上。
当我们使用for-in循环迭代一个对象时,变量被赋予字符串值(,即上例中的变量x获取字符串值),当我们尝试访问对象时.x内部循环实际发生的是 object。“property1”并且对象中没有名为“property1”(注意引号)的属性。
答案 3 :(得分:0)
当您编写object.x
时,编译器正在查找属性x
,但它找不到它,因此返回undefined
,因为没有x
} property。
使用object[x]
编译器在object
中查找x
存储的值的属性。
var object = {
propriety1 : "value1",
propriety2 : "value2",
propriety3 : "value3"
}
// object doesn't have the property x --> returns undefined
console.log('first', object.x)
// object has propriety1 so it returns it value
console.log('second', object.propriety1)
for (var x in object) {
// looks for the value of x in object
console.log(object[x]);
// looks for the property x in object --> undefined
console.log(object.x)
}