【问题标题】:Is the "let" keyword required when declaring the index variable in a for-loop?在 for 循环中声明索引变量时是否需要 \"let\" 关键字?
【发布时间】:2023-02-17 01:10:40
【问题描述】:

对不起,如果这是非常基本的。我是 Javascript 的新手,似乎无法在任何地方找到答案。

我在编码时意识到我一直在省略来自我的 for 循环的关键字。但是在我读过的所有文档中,我总是看到包括。

例如,当我像这样使用 for 循环时,它们会按预期工作:

for (i = 0; i < 10; i++)

但是我读到的所有内容都是这样构造循环的:

for (let i = 0; i < 10; i++)

我已经确定了未通过检查是否可在循环外访问来将其初始化为 var。

当我省略, 是个正确暗示和解释?或者也许我的 IDE (VSCode) 正在捕捉我的遗漏并为我修复它?或者这是一种不好的做法,我需要显式声明索引变量

【问题讨论】:

  • 不暗示let。您只是在使用没有它的全局变量。
  • 依靠。你喜欢 i 超出范围吗?您是在尝试编写好的代码,还是这是一个不在乎情况? JavaScript 没有强烈的意见,但一个好的 JavaScript linter 肯定有。
  • 这回答了你的问题了吗? Let variable in a JavaScript for loop

标签: javascript for-loop let


【解决方案1】:

sn-p 使用非严格模式,显示在该模式下:

  • 如果您在循环中使用let,则该变量仅在循环(块作用域)内可见。
  • 如果您在循环中使用var,变量在循环出现的整个函数(函数作用域)中都是可见的
  • 如果两者都不使用,则该变量在全局范围内声明。

如果我们使用 "use strict" 作为 Javascript 的第一条语句,如果循环中没有 letvar 就会抛出错误。那将是更好的做法。

window.onload = function() {
    loopWithoutLet();
    loopWithVar();
    loopWithLet();
  
    console.log(`after loopWithoutLet, i is visible at global scope: i=${i}`);
    console.log(`after loopWitVar, j is not visible at global scope: typeof(j)=${typeof(j)}`);
    console.log(`after loopWith, k is not visible at global scope: typeof(k)=${typeof(k)}`);
}

function loopWithoutLet(){
    for (i = 0 ; i < 3; i++){
      console.log("looping without let");
    }
    console.log(`without let or var, i is visible inside function even outside loop. i = ${i}`);
}

function loopWithVar(){
    for (var j = 0 ; j < 3; j++){
      console.log("looping with var");
    }
    console.log(`using var, j is visible inside function even outside loop. j = ${j}`);
}

function loopWithLet(){
    for (let k = 0 ; k < 3; k++){
      console.log("looping with let");
    }
    console.log(`using let, k is not visible inside function but outside loop. typeof(k) = ${typeof(k)}`);
}

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2018-04-25
    • 2018-04-16
    • 2013-10-17
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多