ES6介紹
ECMAScript 6.0(以下簡(jiǎn)稱 ES6)是 JavaScript 語(yǔ)言的下一代標(biāo)準(zhǔn),已經(jīng)在 2015 年 6 月正式發(fā)布了也叫ECMAScript 2015。它的目標(biāo),是使得 JavaScript 語(yǔ)言可以用來(lái)編寫(xiě)復(fù)雜的大型應(yīng)用程序,成為企業(yè)級(jí)開(kāi)發(fā)語(yǔ)言
let和const
let
let是塊級(jí)作用域 灾杰,函數(shù)內(nèi)部使用let定義后添寺,對(duì)函數(shù)外部無(wú)影響防症,只在let命令所在的代碼塊內(nèi)有效珠月。
let c = 3;
console.log('函數(shù)外let定義c:' + c);//輸出c=3
function change(){
let c = 6;
console.log('函數(shù)內(nèi)let定義c:' + c);//輸出c=6
}
change();
console.log('函數(shù)調(diào)用后let定義c不受函數(shù)內(nèi)部定義影響:' + c);//輸出c=3
const
const聲明一個(gè)只讀的常量扩淀。一旦聲明,常量的值就不能改變啤挎。而且必須初始化驻谆。
const b = 2;//正確
// const b;//錯(cuò)誤,必須初始化
console.log('函數(shù)外const定義b:' + b);//有輸出值
// b = 5;
// console.log('函數(shù)外修改const定義b:' + b);//無(wú)法輸出
let庆聘、const胜臊、var區(qū)別
- const 和let不存在變量提升
- let和var定義的是變量,可作更改伙判;const定義的是常量象对,不可更改。
- const和let的作用域?yàn)?code>{}宴抚;var的作用域?yàn)?code>function(函數(shù)中)
ES6變量的解構(gòu)賦值
數(shù)組的解構(gòu)
let a = 1;
let b = 2;
let c = 3;
ES6 允許寫(xiě)成下面這樣勒魔。
let [a, b, c] = [1, 2, 3];
對(duì)象的解構(gòu)
let {d,e,f} = {d:3,e:4,f:5}
console.log(d,e,f); // 3 4 5
對(duì)象的擴(kuò)展
屬性簡(jiǎn)寫(xiě)
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}
// 等同于
const baz = {foo: foo};
只有當(dāng)定義的變量和對(duì)象中的屬性值一致
時(shí)才可寫(xiě)成{foo: foo}
的格式,否則將會(huì)改變對(duì)象的值菇曲,直接影響后續(xù)代碼的執(zhí)行冠绢。
方法簡(jiǎn)寫(xiě)
const a = {
method: function() {
return "Hello!";
}
};
// 等同于
const a = {
method() {
return "Hello!";
}
};
函數(shù)的擴(kuò)展
ES6允許使用“箭頭”=>
定義函數(shù)
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
如果箭頭函數(shù)的代碼塊部分多于一條語(yǔ)句,就要使用大括號(hào)將它們括起來(lái)常潮,并且使用return
語(yǔ)句返回弟胀。
var sum = (num1, num2) => { return num1 + num2; }
注意點(diǎn):
1. 函數(shù)體內(nèi)的this對(duì)象,就是定義時(shí)所在的對(duì)象喊式,而不是使用時(shí)所在的對(duì)象孵户。
2. 不可以當(dāng)作構(gòu)造函數(shù),也就是說(shuō)岔留,不可以使用new命令夏哭,否則會(huì)拋出一個(gè)錯(cuò)誤。
3. 不可以使用arguments對(duì)象贸诚,該對(duì)象在函數(shù)體內(nèi)不存在方庭。如果要用,可以用rest參數(shù)代替酱固。
4. 在箭頭函數(shù)中械念,this是固定的。