首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript数组迭代- MDN示例

JavaScript数组迭代- MDN示例
EN

Stack Overflow用户
提问于 2013-05-14 00:17:04
回答 3查看 810关注 0票数 0

我在MDN网站上阅读了对JavaScript的重新介绍,并在数组部分遇到了这个示例:

代码语言:javascript
复制
for (var i = 0, item; item = a[i++];){
   // Do something with item
}

其中"a[]“是一个被循环的数组。

我对"item“在第一次迭代中的值感到困惑。由于i=0和item最初未定义,那么当为其赋值ai++时,迭代不是从i=1开始吗?这意味着迭代将从a[]数组-> a1中的第二个元素开始,完全跳过第一个元素a?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-14 00:18:15

i++是后增量运算符,这意味着它将i递增1,但计算结果为旧的(非递增的)值。

代码语言:javascript
复制
> i = 0
  0
> i++
  0
> i
  1
票数 4
EN

Stack Overflow用户

发布于 2013-05-14 00:25:05

i++是post增量(参见其他答案),item不会是未定义的,因为谓词( for循环中的第二部分)在每次迭代之前执行。

代码语言:javascript
复制
for (var i = 0, item ; item = a[i++];) {

将评估为:

代码语言:javascript
复制
var i = 0;
var item;

item = a[i];  // loop
i += 1
if (!item) // exit loop
// loop body
// start again at loop

这种语法的问题是,如果a中的值是假的,循环将过早终止。

代码语言:javascript
复制
var a = [1,2,0,3,4];
for (var i = 0, item ; item = a[i++];) {
   console.log(item);
}

将输出"1 2“,因为"0”是falsy并且循环终止

票数 2
EN

Stack Overflow用户

发布于 2013-05-14 00:18:32

i++意味着javascript读取i值,然后递增它。

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

https://stackoverflow.com/questions/16526670

复制
相关文章

相似问题

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