javascript - 在 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
可以有意义?
解决方案
这是因为您的 while 语句中大括号内的所有内容都是一个条件。您不能在条件内定义新变量。
由于结构,您可以在 for 循环中使用 let :
for (<declare variable>;<condition>;<iterator>)
推荐阅读
- swiftui - Facebook 登录 + SwiftUI:登录/注销后不调用 loginButton 和 loginButtonDidLogOut
- java - 原因:org.springframework.beans.factory.BeanCreationException:创建名为“securityConfig”的bean时出错
- sql - 在 SQLite 中创建 BEFORE 触发器
- r - 如何从列表中每个响应的特定项目中创建一个数据框?
- python - 使用 PIL 显示图像会导致奇怪的色块
- swift - Xcode & Swift - 无法从 AppDelegate 实例化另一个视图控制器
- python - 文件转换为exe不能生成条码
- oauth - 是否可以使用 Microsoft Graph API 访问令牌(不是应用程序的范围)获取用户的权限范围?
- typescript - 使用云函数执行 if 语句
- visual-studio - MSBuild - 控制台(Exec)传递一个带有新行的大字符串作为参数