ES6(阮一峰)学习总结

Posted eco-just

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6(阮一峰)学习总结相关的知识,希望对你有一定的参考价值。

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

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(阮一峰)学习总结的主要内容,如果未能解决你的问题,请参考以下文章

关于阮一峰老师es6(第三版)中管道机制代码的理解浅析

ES6 阮一峰阅读学习

阮一峰老师的ES6入门:变量的解构赋值

1.《ES6标准入门》(阮一峰)--3.变量的解构赋值

1.《ES6标准入门》(阮一峰)--2.let 和 const 命令

ES6学习—变量的解构赋值