您的位置:首页 > 其它

ES6 学习笔记(1)

2016-07-27 21:18 246 查看

恰逢换工作之际,新公司的是以
ES6
+
webpack
+
vue
为技术栈, 正好
ES6
是我下个学习目标, 因此买了阮老师的 ES6标准入门,也当是支持阮老师了.

笔记将会照着这本书的阅读展开而做一些笔记,为了对
ES6
理解更加深刻,做了个简单的
gulp
,让
gulp
ES6
进行编码,转为
ES5
,两边同时观察,让自己立即更加深刻!跟笔记有关的代码将全部放在github上.


let 和 const 命令

let

由于 JS 没有块级作用域,导致声明的变量在
{}
内外都能访问,对此我们都是采用
function(){}
来模拟块级作用域.

{
var a = 1;
}
console.log(a);     //=> 1

(function(){
var b = 1;
})();
console.log(b);     //=> not defined

ES6
中,
let
能很好的将变量局限在
{}
中.

{
let a = 1;
var b = 2;
}
console.log(a);     //=> not defined
console.log(b);     //=> 2

因此,在
if
,
for
等有块级作用域的语句里,将会发挥的很好!但是也带来了暂时性死区.只要作用域里有
let
语句,所声明的变量将会直接绑定在该作用域下.

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

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

var
具有变量提升,而
let
不具有变量提升.因此使用
let
都需要声明后使用!

同时
let
不允许重复声明.

console.log(a); //=> undefined
var a = 1;
console.log(a); //=> 1
let a = 2;  //=> error

console.log(b); //=> not defined

console.log(c); //=> not defined
let c = 1;
console.log(c); //=> 1;
let c = 2;  //=> error


PS:
ES6
let
所带来的块级作用域,变量不提升以及暂时性死区,将减少很多'意外的情况',避免了
ES5
常有的错误.使得代码变得更加的严谨与安全!

PS1: 块级作用域对函数声明也是有效的.


const

const
用来声明常量,一旦声明后,其值就不能改变.准确的说是该变量指向的地址将不能被改变.

const
大部分效果与
let
一致,比如块级作用域,变量不提升,暂时性死区,不能重复声明等.

const a = 1;
console.log(a); //=> 1;
a = 2;  //=> error

const b = [];
b = [1];    //=> error
b[0] = 1;
console.log(b); //=> [1];

const c = {};
c = {name: 'ES6'} //=> error
c.name = 'ES6';
console.log(c); //=> {name: 'ES6'}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: