ES6中常用的10個新特性講解

2021-10-03 18:24:25 字數 4568 閱讀 3826

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之前,我們往往這麼處理模板...