“for in”循环---对象语法

时间:2017-08-19 16:13:09

标签: javascript object undefined-behavior for-in-loop

当我写

Fragment

它运作正常!
但是,如果我将for (var x in object) { console.log(object[x]) } 替换为object[x]则不起作用,则会返回object.x

undefined循环之外的object[propriety1]object.propriety1的控制台记录对两者都适用。

任何解释?!

for in

4 个答案:

答案 0 :(得分:1)

  1. x只是for循环
  2. 中变量的名称

    x的值将是" property1",然后" property2"然后" property3"随着for循环的进展

    1. object[x]表示"获取object的属性,其名称包含在变量x"中。它相当于object["property1"]

    2. object.x没有意义,除非你的对象有一个名为" x"

    3. 的属性

答案 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)  
}