JavaScript中的let与var
来源:互联网 发布:吴宗宪 周杰伦 知乎 编辑:程序博客网 时间:2024/04/24 07:58
先贴两段让人匪夷所思的代码:
var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10
上面这段代码输出的结果是10。
var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 6
上面这段代码输出的是6
这就引出了javascript中,关于let和var所定义的变量作用域区别。
先对上面两段代码进行一下解读:
第一段代码:变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。
第二段代码:变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。
var关键词的作用域是最近的函数作用域(如果在函数体的外部就是全局作用域), let 关键词的作用域是最接近的块作用域(如果在任何块意外就是全局作用域),这将会比函数作用域更小。
阅读全文
0 0
- JavaScript中的let与var
- JavaScript中的let与var
- JavaScript ES6中的var、let、const
- javascript中的var,let和const
- 再探var与let
- ECMAScript6 let 与 var
- javascript中var与let与const的区别
- ES5中的var与ES6中的let,const的区别
- JavaScript ES6中const、let与var的对比详解
- 【JavaScript】let与var的区别及变量、函数提升
- JavaScript 之 var 和 let
- ES6 中的let、const与var的区别
- js中的let和var
- var 与 let 的区别
- var与let,const区别
- var 与let const比较
- let与var的区别
- Javascript ES6 let 和 var 比较
- Android Studio常用设置
- 嵌入式图像处理算法优化
- Prime Ring Problem
- springmvc读取请求参数值,向界面传值
- bzoj3551 [ONTAK2010]Peaks加强版(Kruskal重构树+主席树)
- JavaScript中的let与var
- python os语法
- 割双眼皮你最关心的10个问题
- 不只是一份工作
- Spring的Dao Service采用单例模式+ThreadLoca模式实现线程安全
- 初识IONIC2
- android经验网址总结
- Balancing Act [dfs][树dp]
- Shooting Contest(POJ-1719)(二分最大匹配)