码迷,mamicode.com
首页 > 其他好文 > 详细

ES6(阮一峰)学习总结

时间:2018-02-23 14:42:44      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:结束   i++   理解   循环   总结   color   class   学习   blog   

以下所写都是个人的理解,可能会有不正确的地方。

1.let和var的区别

var a= [];
for (let i = 0; i <10; i++) {
    a[i]=function(){
        console.log(i);
    };
}
console.log(i);
//i is not defined

let声明的变量在循环体外是不可访问的,是个局部变量。

var a= [];
for (var i = 0; i <10; i++) {
    a[i]=function(){
        console.log(i);
    };
}
console.log(i);      //10

var声明的变量是个全局变量,所以循环体外可以访问,值为循环结束后的值:10。

var a= [];
for (var i = 0; i <10; i++) {
    a[i]=function(){
        console.log(i);
    };
}
//i = 10;    
a[8]() ;             //10
i=111;
a[8](); //111

var声明的变量,在全局范围内有效,循环结束后i=10,

调用a[8](),实际上是执行函数 function(){console.log(i)};自然结果为10;

当人为改变i=111后,调用a[8](),继续执行console.log(i);结果自然为111.

var a= [];
for (let i = 0; i <10; i++) {
    a[i]=function(){
        console.log(i);
    };
}   
a[8]() ;            //8
i=10;
a[8](); //8

而用let声明的变量,在循环体外是不能访问的,那么

这里的a[8](),执行的就不是 function(){console.log(i)}了,因为在循环体外是找不到这个i的,所以

这里的a[8](),执行的是 function(){console.log(8)},就算人为给它一个i=10,执行的还是console.log(8)。

总结的话:

let声明变量时,若let变量存在于循环体内,那么在多次循环之间这个let变量值是互不影响的;

var声明的变量由于是全局变量,多次循环是会改变它的值的,当调用时,永远是调用这唯一一个变量的最终值。

ES6(阮一峰)学习总结

标签:结束   i++   理解   循环   总结   color   class   学习   blog   

原文地址:https://www.cnblogs.com/eco-just/p/8461769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!