JavaScript中var和let在变量声明和循环中的作用有何不同?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1888个文字,预计阅读时间需要8分钟。
目录- 在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变量。
本文共计1888个文字,预计阅读时间需要8分钟。
目录- 在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变量。

