首页 > 解决方案 > 在 ES6 JavaScript 中,我们可以在 for 循环中使用 `let`,但不能在 while 循环中使用?

问题描述

以下作品:

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 语句之前声明一个变量,但在这种情况下,不这样做是有意义的。它可能看起来使用 alet甚至const可以有意义?

标签: javascriptecmascript-6

解决方案


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

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

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

推荐阅读