这个语法是如何工作的?

DrS*_*ove 0 javascript syntax

erase: function(item){
        for (var i = this.length; i--;) {
            if (this[i] === item) this.splice(i, 1);
        }
        return this;
    }
Run Code Online (Sandbox Code Playgroud)

这个(var i = this.length; i--;)句法结构如何 工作?

应该有三个部分吗?在这种情况下是什么?

这里开始.

Joe*_*oey 5

一个for在类似C语言的循环由三个部分组成:

for(初始化 ; 条件 ; 更新){ ... }

然后循环转换为以下(大致)等效循环(存在差异,但这里不相关):

初始化程序;
while(条件){
    ...
    更新;
}

所以初始化器部分首先运行; 然后只要条件保持为真,循环就会运行,并且在每次迭代结束时运行更新部分.它不必是增量,但最常见的形式如下所示:

for (var i = 0; i < something; i++) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,你可以写你想要进入的部分不管,你也可以将它们留空如果不管你在循环中做足够的循环正常运行和终止.因此,在您的情况下,因为i--是一个也更新的表达式,i循环只是将条件更新组合成一个并倒计时.

  • 在我开始写自己的长答案之前发布+1.请注意,在JavaScript中,所有3个部分都是表达式(并不是解释明显不同). (2认同)