ecmascript 6(es6) 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。
1.不一樣的變數宣告:const和let
var x =
'全域性變數'
;console.
log(x)
;// 全域性變數
let表示宣告變數,而const表示宣告常量,兩者都為塊級作用域;const 宣告的變數都會被認為是常量,意思就是它的值被設定完成後就**不能再修改了:**
const a =
1a =
0//報錯
const student =
student.name = 『yy』;// 不報錯
student = ;// 報錯
有幾個點需要注意:
2.模板字串
在es6之前,我們往往這麼處理模板字串:
通過「\」和「+」來構建模板
$
("body").
html
("this demonstrates the output of html \
content to the page, including student's\
"+ name +
", "
+ seatnumber +
", "
+ *** +
" and so on."
);
而對es6來說
基本的字串格式化。將表示式嵌入字串中進行拼接。用${}來界定;
es6反引號(``)直接搞定;
$
("body").
html
(`this demonstrates the output of html content to the page,
including student's $,
$, $and so on.`
);
3.箭頭函式(arrow functions)
es6 中,箭頭函式就是函式的一種簡寫形式,使用括號包裹引數,跟隨乙個 =>,緊接著是函式體;
箭頭函式最直觀的三個特點。
不需要 function 關鍵字來建立函式
省略 return 關鍵字
繼承當前上下文的 this 關鍵字
// es5
varadd
=function
(a, b)
;// 使用箭頭函式
varadd
=(a, b)
=> a + b;
// es5[1
,2,3
].map(
(function
(x))
.bind
(this))
;// 使用箭頭函式[1
,2,3
].map(x => x +1)
;
細節:當你的函式有且僅有乙個引數的時候,是可以省略掉括號的。當你函式返回有且僅有乙個表示式的時候可以省略{} 和 return;
4. 函式的引數預設值
在es6之前,我們往往這樣定義引數的預設值:
// es6之前,當未傳入引數時,text = 'default';
function
printtext
(text)
// es6;
function
printtext
(text =
'default'
)printtext
('hello');
// hello
printtext()
;// default
5.spread / rest 操作符
spread / rest 操作符指的是 ...,具體是 spread 還是 rest 需要看上下文語境。
當被用於迭代器中時,它是乙個 spread 操作符:
function
foo(x,y,z)
let arr =[1
,2,3
];foo(
...arr)
;// 1 2 3
當被用於函式傳參時,是乙個 rest 操作符:當被用於函式傳參時,是乙個 rest 操作符:
function
foo(
...args)
foo(1,
2,3,
4,5)
;// [1, 2, 3, 4, 5]
6.二進位制和八進位制字面量
es6 支援二進位制和八進位制的字面量,通過在數字前面新增 0o 或者0o 即可將其轉換為八進位制值:
let ovalue =
0o10
;console.
log(ovalue)
;// 8
let bvalue =
0b10
;// 二進位制使用 `0b` 或者 `0b`
console.
log(bvalue)
;// 2
7.物件和陣列解構
// 物件
const student =
// 陣列
// const student = ['sam', 22, '男'];
// es5;
const name = student.name;
const age = student.age;
const *** = student.***;
console.
log(name +
' --- '
+ age +
' --- '
+ ***)
;// es6
const
= student;
console.
log(name +
' --- '
+ age +
' --- '
+ ***)
;
8.物件超類
es6 允許在物件中使用 super 方法:
var parent =
}var child =}
object.
setprototypeof
(child, parent)
;child.
foo();
// hello from the parent
// hello from the child
9.for…of 和 for…in
for…of 用於遍歷乙個迭代器,如陣列:
let letters =
['a'
,'b'
,'c'];
letters.size =3;
for(
let letter of letters)
// 結果: a, b, c
for...
in 用來遍歷物件中的屬性:
let stus =
["sam"
,"22"
,"男"];
for(
let stu in stus)
// 結果: sam, 22, 男
10.es6中的類
es6 中支援 class 語法,不過,es6的class不是新的物件繼承模型,它只是原型鏈的語法糖表現形式。
class
student
study()
static
read()
} console.
log(
typeof student)
;// function
let stu =
newstudent()
;// "i'm a student."
stu.
study()
;// "study!"
stu.
read()
;// "reading now."
類中的繼承和超集:
class
phone
}class
miextends
phone
}let mi8 =
newmi()
;
extends 允許乙個子類繼承父類,需要注意的是,子類的constructor 函式中需要執行 super() 函式。
當然,你也可以在子類方法中呼叫父類的方法,如super.parentmethodname()。
在 這裡 閱讀更多關於類的介紹。
有幾點值得注意的是:
ES6中常用的10個新特性講解
ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。1.不一樣的變數宣告 const和let var x 全域性變數 conso...
ES6中常用的10個新特性講解
ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。es61.不一樣的變數宣告 const和let var x 全域性變數 co...
ES6中常用的10個新特性講解
ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。1.不一樣的變數宣告 const和let 在es6之前,我們往往這麼處理模板...