首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript for()循环w/ object声明和IN保留字-只是想要得到一些澄清

Javascript for()循环w/ object声明和IN保留字-只是想要得到一些澄清
EN

Stack Overflow用户
提问于 2011-08-28 16:35:01
回答 4查看 239关注 0票数 0

下面我正在做一个基本的学习脚本。我的主要问题是在for()声明中,什么是' in‘保留字,以及starName与它的关系,因为它在页面的早期没有定义。

我正在尝试理解for()循环是如何使用星型starName语句中的语句“思考”的。

代码语言:javascript
复制
<script type="text/javascript">
var star = {};

star["Polaris"] = new Object;
star["Mizar"] = new Object;
star["Aldebaran"] = new Object;
star["Rigel"] = new Object;

star["Polaris"].constellation = "Ursa Minor";
star["Mizar"].constellation = "Ursa Major";
star["Aldebaran"].constellation = "Taurus";
star["Rigel"].constellation = "Orion";

</script>
</head>
<body id="mainbody">

<script type="text/javascript">
for (starName in star) {
var para = document.createElement('p');
para.id = starName;
para.appendChild(document.createTextNode(starName +
": " + star[starName].constellation));
document.getElementsByTagName("body")[0].appendChild(para);
}
</script>

<!-- output below -->

<p id="Polaris">Polaris: Ursa Minor</p>
<p id="Mizar">Mizar: Ursa Major</p>
<p id="Aldebaran">Aldebaran: Taurus</p>
<p id="Rigel">Rigel: Orion</p>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-28 16:38:01

for ... in语法枚举对象的所有可枚举属性。

starName将是表示属性名称的字符串。您可以这样访问该属性(并执行许多其他事情):

代码语言:javascript
复制
var p = star[starName];

现在,在使用for ... in语法时,您应该注意到以下几点:

利用hasOwnProperty防止在原型链中添加更高的属性。

代码语言:javascript
复制
Object.prototype.allObjectWillInheritThis = 1;

/// ...

for (var starName in star) {
    if (star.hasOwnProperty(starName)) {

        // Do your thing
    }
}

过滤掉函数。很可能你不是对函数感兴趣,而是对属性感兴趣。

代码语言:javascript
复制
for (var starName in star) {
    if (star.hasOwnProperty(starName) &&
        typeof star[starName] !== 'function') {

        // Do your thing
    }
}
票数 3
EN

Stack Overflow用户

发布于 2011-08-28 16:38:04

也许这会有帮助:for(newVariable in existingVariable)

for-循环构造创建一个新变量,您可以将其用作循环中的当前值。第二个值是要循环使用的变量。

正如Bryan所指出的,for-in结构只循环可枚举属性.如果要检查某物是否可枚举,可以在其上调用.propertyIsEnumerable(0)

票数 1
EN

Stack Overflow用户

发布于 2011-08-28 16:40:13

它的工作原理是,星号是一个具有多个值的数组(或对象)。想象一个数字从1到10的数组。

in关键字遍历数组并将值分配给starName。因此,数字为1到10的数组将迭代10次,每次starName都将成为下一个值。

顺序基于数组(或对象)的索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7222233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档