为什么这个JS for在循环中只记录一个属性的键,而不是整个属性
Why does this JS for-in loop log just the key of a property, and not the entire property?
MDN表示:
用于。。in语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,都可以执行语句。
如果我输入这个JavaScript代码:
var myObject = {0:'cat', 1:'dog', 2:'fish'};
for (var x in myObject) {
console.log(x);
}
我得到这个输出:
0
1
2
如果它正在"遍历可枚举的属性",为什么不像这样记录整个属性?
0: 'cat'
1: 'dog'
2: 'fish'
我意识到我也可以让它通过myArray['x']
记录值,但我想知道为什么它只记录密钥
这只是for在循环中的内置逻辑的一部分吗?并且与它们的预期用途有关吗?
这是javascript在循环中的预期行为。如果你想要财产的价值,那么你应该这样做:
var myObject = {0:'cat', 1:'dog', 2:'fish'};
for (var x in myObject) {
console.log(myObject[x]);
}
在示例对象中,您有三个属性。这些属性的名称分别为0、1和2。这些属性的值为"cat"、"dog"answers"fish"。For在循环中枚举属性的名称,而不是值。
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 你能用来自数组的属性名称生成一个对象吗
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- AngularJS:如何用同一对象的另一个属性访问一个属性
- 如何为下拉列表的每个选项添加一个属性
- 如果另一个属性相同,请删除该属性
- Knockout observable没有观察到其中一个属性
- 使用数据属性将HTML数据复制到另一个元素
- 将javascript对象(属性+值)合并到一个对象中
- 使用 JavaScript 一次为一个元素设置多个属性
- 我如何选择/点击一个带有for=“”的元素"属性[量角器]
- 如何计算一个对象中五个属性中有多少是非null的
- 检查来自不同数组的两个元素的一个属性是否相等
- 获取一个对象´s属性的名称使用字符串
- 选择一个元素,使其最近的具有特殊属性的父元素具有特殊值
- JavaScript-通过类似的属性查找对象,并将其推送到一个新的数组中
- 在html页面的属性周围添加了一个额外的空间
- 谷歌闭包编译器内联了一个重复使用的私有属性 - 一个缺陷还是我错过了什么
- 给一个嵌套的属性/属性一个自定义值