Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在循环中访问javascript对象时出现问题_Javascript_Loops_Object - Fatal编程技术网

在循环中访问javascript对象时出现问题

在循环中访问javascript对象时出现问题,javascript,loops,object,Javascript,Loops,Object,在for..In循环中 为什么作为o.i访问时属性的值返回undefined而o[i]返回正确的值 代码段供参考: var object = { id:2, name:'axs', address:'colon street' }; for(let property in object){ console.log(object.property); // returns undefined console.log(object[property]); // retur

在for..In循环中

为什么作为
o.i
访问时属性的值返回
undefined
o[i]
返回正确的值

代码段供参考:

var object = {
   id:2,
   name:'axs',
   address:'colon street'
};

for(let property in object){
  console.log(object.property); // returns undefined
  console.log(object[property]); // returns property-value
}

o.i
将在
对象中查找属性
i
,但当您执行
o[i]
操作时,它将查找评估的属性
i
,该属性可能是:
名称
id
,等等


使用
dot
符号获取属性时,不会对变量求值,会认为您正在尝试获取属性
i
本身

o.i
将在
对象中查找属性
i
,但当您执行
o[i]
时,它将查找评估属性
i
,该属性可能是:
名称
id
,等等


使用
dot
符号获取属性时,不会对变量求值,会认为您正在尝试获取属性
i
本身

它们是访问对象属性的不同方式。o、 i相当于o['i'],在您的情况下,它不存在,因此返回undefined。

它们是访问对象属性的不同方式。o、 i相当于o['i',在您的情况下,它不存在,因此返回undefined。

for..in
循环中,
属性
作为字符串分配给变量,即在循环中,
typeof(i)
将始终返回
“string”
。关于
中..的
工作原理

当使用点表示法访问时,引擎尝试读取为
o.“name”
,它正确地将其查找为
未定义。请注意,
o.name
o.“name”
是两个不同的东西

使用访问对象的属性

  • -
    属性
    必须是有效的JavaScript标识符,即
    属性
    将被计算以返回所需的值

  • -
    属性
    始终是字符串。字符串不必是有效标识符,它可以有任何值,例如“1foo”、“!bar!”,甚至是“”(空格)

PS


当在中使用<代码>访问对象属性时,请注意,如果您只考虑附加到对象的属性,而不考虑它的原型。在这种情况下,请使用

getOwnPropertyNames()
或执行
hasOwnProperty()
检查

for..In
循环中,
属性
作为字符串分配给变量,即在循环中,
typeof(i)
将始终返回
“string”
。关于
中..的
工作原理

当使用点表示法访问时,引擎尝试读取为
o.“name”
,它正确地将其查找为
未定义。请注意,
o.name
o.“name”
是两个不同的东西

使用访问对象的属性

  • -
    属性
    必须是有效的JavaScript标识符,即
    属性
    将被计算以返回所需的值

  • -
    属性
    始终是字符串。字符串不必是有效标识符,它可以有任何值,例如“1foo”、“!bar!”,甚至是“”(空格)

PS


当在中使用<代码>访问对象属性时,请注意,如果您只考虑附加到对象的属性,而不考虑它的原型。在这种情况下,请使用

getOwnPropertyNames()
或执行
hasOwnProperty()
检查

表达式
object.property
返回未定义的属性,因为在
object
上找不到名为
property
的属性,因为在
对象
上找不到名为
属性
的属性,因为点符号将
属性
视为所用对象的属性。要将
for in
循环中的“property”用作变量,需要使用方括号访问器

如果为对象指定“属性”属性,则该属性将按预期工作:

var对象={
id:2,
名称:'axs',
地址:科隆街,
物业:'住宅'
};
for(对象中的let属性){
console.log(object.property);//返回'residential'
console.log(object[property]);//返回属性值

}
因为点符号将
属性
视为所用对象的属性。要将
for in
循环中的“property”用作变量,需要使用方括号访问器

如果为对象指定“属性”属性,则该属性将按预期工作:

var对象={
id:2,
名称:'axs',
地址:科隆街,
物业:'住宅'
};
for(对象中的let属性){
console.log(object.property);//返回'residential'
console.log(object[property]);//返回属性值

}
您到底想做什么?你能详细说明一下吗?你到底想做什么?你能详细说明一下吗?