最终表达式的Javascript不允许复杂语句。为什么?

最终表达式的Javascript不允许复杂语句。为什么?,javascript,loops,for-loop,expression,Javascript,Loops,For Loop,Expression,撇开原因不谈,我发现了以下几点: var lines = ["Line 1", "Line 2", "Line 3"], i = 0, line; for (line[i]; i < lines.length; line = lines[i++]) { console.log(line); //Outputs "Line 1" three times } for (line[i]; i < lines.length; i++, line = lines[i]) {

撇开原因不谈,我发现了以下几点:

var lines = ["Line 1", "Line 2", "Line 3"], i = 0, line;

for (line[i]; i < lines.length; line = lines[i++]) {
     console.log(line); //Outputs "Line 1" three times
}

for (line[i]; i < lines.length; i++, line = lines[i]) {
     console.log(line); //Outputs "Line 1", "Line 2", "Line 3"
}
var lines=[“第1行”、“第2行”、“第3行”],i=0,第2行;
对于(行[i];i
唯一的区别是将最终表达式语句中的i++分隔为两个用逗号分隔的语句(谁想到了这种语法,顺便说一句?!多个语句不应该用分号分隔并用{}包装,就像我们在其他地方使用的那样吗?我离题了…)那么Javascript的功能是什么呢?当你绕着这个循环时,line=lines[i++]对你来说太复杂了吗

在有人问我为什么不能把line=line[I]放在循环的顶部之前:因为第一个例子非常优雅。它把东西分开


所以我的问题是:为什么,Javascript,为什么?

您发布的代码没有运行

每个for循环的开始

 for (line[i]; 
毫无意义

也许你是说

 for (line = lines[i];
?

var lines=[“第1行”、“第2行”、“第3行”],i=0,第2行;
for(line=lines[i];i
最终表达式的Javascript不允许复杂语句。为什么?

你回答了你自己的问题。最后一个表达式是表达式,而不是语句。这就是语言的设计方式。它可以追溯到四十年前C中的逗号运算符,如果不是更进一步的话

如果要在
内指定
,可以通过以下方式编写循环:

const行=[1,2,3];
for(设i=0,line;line=line[i],i}
for
这是什么类型的
循环?两个循环都无法运行
line未定义
有时这不是语言,但您如何使用它会让您感觉到(line=lines[i];i
将按要求工作是的,当然,这就是为什么我解释了
++I
I++
的对比,并希望这是显而易见的。我肯定在回答中忽略了这一点。我希望人们遵循逻辑。如果我解释了
I++
返回0,以及这是错误的原因,然后我解释了
++I
将返回递增的值,我希望它们连接点。我的错误。是的,对不起,第一部分应该是
line=lines[I]
。现在,i++与++i完全合情合理。我不应该意识到这一点。至于背后的原因……在这种情况下,我需要在数组中向前跳,继续运行更多代码。因此我可以使用
line=lines[++i]
在循环中前进而不循环。forEach无法做到这一点。此外,forEach相当慢。感谢gman的详细解释和其他人的参与。