ES6介紹
ECMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經在 2015 年 6 月正式發布了也叫ECMAScript 2015。它的目標,是使得 JavaScript 語言可以用來編寫復雜的大型應用程序,成為企業級開發語言
let和const
let
let是塊級作用域 ,函數內部使用let定義后,對函數外部無影響,只在let命令所在的代碼塊內有效。
let c = 3;
console.log('函數外let定義c:' + c);//輸出c=3
function change(){
let c = 6;
console.log('函數內let定義c:' + c);//輸出c=6
}
change();
console.log('函數調用后let定義c不受函數內部定義影響:' + c);//輸出c=3
const
const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。而且必須初始化。
const b = 2;//正確
// const b;//錯誤,必須初始化
console.log('函數外const定義b:' + b);//有輸出值
// b = 5;
// console.log('函數外修改const定義b:' + b);//無法輸出
let、const、var區別
- const 和let不存在變量提升
- let和var定義的是變量,可作更改;const定義的是常量,不可更改。
- const和let的作用域為
{}
;var的作用域為function
(函數中)
ES6變量的解構賦值
數組的解構
let a = 1;
let b = 2;
let c = 3;
ES6 允許寫成下面這樣。
let [a, b, c] = [1, 2, 3];
對象的解構
let {d,e,f} = {d:3,e:4,f:5}
console.log(d,e,f); // 3 4 5
對象的擴展
屬性簡寫
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}
// 等同于
const baz = {foo: foo};
只有當定義的變量和對象中的屬性值一致
時才可寫成{foo: foo}
的格式,否則將會改變對象的值,直接影響后續代碼的執行。
方法簡寫
const a = {
method: function() {
return "Hello!";
}
};
// 等同于
const a = {
method() {
return "Hello!";
}
};
函數的擴展
ES6允許使用“箭頭”=>
定義函數
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
如果箭頭函數的代碼塊部分多于一條語句,就要使用大括號將它們括起來,并且使用return
語句返回。
var sum = (num1, num2) => { return num1 + num2; }
注意點:
1. 函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。
2. 不可以當作構造函數,也就是說,不可以使用new命令,否則會拋出一個錯誤。
3. 不可以使用arguments對象,該對象在函數體內不存在。如果要用,可以用rest參數代替。
4. 在箭頭函數中,this是固定的。