JavaScript中var和let在变量声明和循环中的作用有何不同?

2026-04-02 21:370阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1888个文字,预计阅读时间需要8分钟。

JavaScript中var和let在变量声明和循环中的作用有何不同?

目录- 在for循环中使用var声明初始化带来的问题- 解决方法- 使用闭包- 使用let变量初始化- for循环中处理let和var声明的初始化变量- 总结- 在for循环中使用var声明初始化带来的问题 // 问题

目录
  • 在for循环中使用var声明初始化带来的问题
  • 解决方法
    • 使用闭包
    • 使用let变量初始化
  • for循环怎么处理用let和var声明的初始化变量?
    • 总结

      在for循环中使用var声明初始化带来的问题

      // 一道经典面试题: var funcs = []; for (var i = 0; i < 3; i++) { funcs[i] = function() { console.log("My value: " + i) }; } for (var j = 0; j < 3; j++) { funcs[j](); } /* 输出结果: > My value: 3 > My value: 3 > My value: 3 */

      会出现这种现象的原因就是:

      • var声明的作用域是函数作用域而不是块级作用域,因此在for循环的循环体之外依然能访问到在初始化for循环时定义的var变量。
      阅读全文
      标签:varlet

      本文共计1888个文字,预计阅读时间需要8分钟。

      JavaScript中var和let在变量声明和循环中的作用有何不同?

      目录- 在for循环中使用var声明初始化带来的问题- 解决方法- 使用闭包- 使用let变量初始化- for循环中处理let和var声明的初始化变量- 总结- 在for循环中使用var声明初始化带来的问题 // 问题

      目录
      • 在for循环中使用var声明初始化带来的问题
      • 解决方法
        • 使用闭包
        • 使用let变量初始化
      • for循环怎么处理用let和var声明的初始化变量?
        • 总结

          在for循环中使用var声明初始化带来的问题

          // 一道经典面试题: var funcs = []; for (var i = 0; i < 3; i++) { funcs[i] = function() { console.log("My value: " + i) }; } for (var j = 0; j < 3; j++) { funcs[j](); } /* 输出结果: > My value: 3 > My value: 3 > My value: 3 */

          会出现这种现象的原因就是:

          • var声明的作用域是函数作用域而不是块级作用域,因此在for循环的循环体之外依然能访问到在初始化for循环时定义的var变量。
          阅读全文
          标签:varlet