繁体   English   中英

在 ES6 JavaScript 中,我们可以在 for 循环中使用 `let` 而不是在 while 循环中吗?

[英]In ES6 JavaScript, we can use `let` in a for-loop but not in a while-loop?

以下工作:

 let re = /\\d/g; while (result = re.exec("654 321")) console.log(result);

但是,如果我们按照 for 循环的编写方式进行操作:

 for (let i = 0; i < 10; i++) console.log(i);

 for (const a of [1,3,5]) console.log(a);

并使用(带有错误的预期结果):

 let re = /\\d/g; while (let result = re.exec("654 321")) console.log(result);

那么let将破坏代码。 ES6 中的什么规则规定在这种情况下我们不能使用let 虽然通常我们在 while 语句之前声明一个变量,但在这种情况下,不这样做是有意义的。 它可能会出现使用let甚至const有意义吗?

这是因为你的 while 语句中大括号内的所有内容都是一个条件。 不能在条件内定义新变量。

由于结构的原因,您可以在 for 循环中使用 let :

for (<declare variable>;<condition>;<iterator>)

while 语句会创建一个循环,只要测试条件的计算结果为真,该循环就会执行指定的语句。 在执行语句之前评估条件:

 while (condition) statement

条件在每次通过循环之前计算的表达式。 如果此条件评估为真,则执行语句。 当条件评估为假时,继续执行 while 循环后的语句。

statement一个可选语句,只要条件计算结果为真就执行。 要在循环内执行多个语句,请使用块语句({ ... })将这些语句分组。

因此,在 while中用语句代替条件表达式在语法上是不正确的。 参阅此处了解更多详情

代码片段不适合我。 (编辑:再次尝试并抛出错误)。 但无论如何它似乎是错误的: for循环的初始语句只执行一次。 这意味着它只定义了i一次。 但是在一段while的情况下,您一次又一次地定义result 这可能就是为什么它不被允许并引发错误的原因

let返回 undefined,而对 undefined 变量的赋值将返回值。

let a = 3;
// undefined;
b = 4;
// 4;

所以你的 while 循环永远不会运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM