js基础之var与let
来源:互联网 发布:电脑网络专家在线咨询 编辑:程序博客网 时间:2024/04/19 15:50
参考阮一峰老师的教程:http://es6.ruanyifeng.com/#docs/let。
一、先附图,此部分为阮老师教程内容。
下图是因为i只有一个,简化理解:最后调用a[i]的时候为输出的consol.log(i)中的指向同一个内存,均为10.
var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10
而如果使用let,声明的变量仅在块级作用域内有效,最后输出的是6。简化理解:a[i]和console.log(i)一一对应,这里的每个i都不一样。
var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 6
上面代码中,变量i是let声明的,当前的i只在轮循环有效,所以每一次循环的其实都是一个新的变量,所以最后输出的是6。你可能会问,如果每一轮循环的变量i都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。
二、函数部分
上代码:
var a = 1;function func(a){a = 2;return a;}func(a);console.log(a); //a为1;在给一个做对比:
var a = 1;function func(a){console.log(a); //a为1a = 2;return a;}var c=func(a);console.log(a); //a为1console.log(c); //c为2上面两个代码对比可发现函数内的a和函数外的a是两个a,作用域不同。
再上一个代码:
function func(a){a.a = 2;}func(a);console.log(a); //输出为{a:2}接着上对比代码:
var a = {a:1};function func(a){console.log(a); //输出{a:1}a.a = 2;console.log(a); //输出{a:2}}func(a);console.log(a); //输出{a:2}三、for中的var与let补充
for (let i = 0; i < 3; i++) { let i = 'abc'; console.log(i); //共输出三次‘abc’}for (var i = 0; i < 3; i++) { let i = 'abc'; console.log(i); //共输出三次‘abc’}for (let i = 0; i < 3; i++) { var i = 'abc'; console.log(i); //Uncaught SyntaxError: Identifier 'i' has already been declared}for (var i = 0; i < 3; i++) { //这里只有i=0被执行了 var i = 'abc'; console.log(i); //共输出一次‘abc’}以上所有代码都在chrome中调试,如有问题欢迎留言!
0 0
- js基础之var与let
- 再探var与let
- ECMAScript6 let 与 var
- js中的let和var
- js面试题:let、var
- var 与 let 的区别
- var与let,const区别
- JavaScript中的let与var
- var 与let const比较
- JavaScript中的let与var
- let与var的区别
- JavaScript 之 var 和 let
- js中const,var,let区别
- js中const,var,let区别
- js中let 、 var 、 const的区别
- js中const,var,let区别
- js中let和var 的区别
- const、let、var区别+js严格模式
- 常用RGB颜色表
- 忠告初学者学习Linux系统的8点建议
- 用十条命令在一分钟内检查Linux服务器性能
- linux命令在线查询网站合计
- Fedora25 BCM43142 安装wifi驱动
- js基础之var与let
- 运算符
- 一套高仿Python的Objective-C API
- 中国Linux开源镜像站大全
- 一套基于NSPredicate的NSArray过滤框架
- 462. Minimum Moves to Equal Array Elements II
- IOS之从plist文件中获取数据
- xhprof安装和使用
- CSRF原理和防御