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

2021-09-23 05:49:57 字數 4319 閱讀 7262

ecmascript 6(es6) 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。

es61.不一樣的變數宣告:const和let

var x = '全域性變數';

console.log(x); // 全域性變數

let表示宣告變數,而const表示宣告常量,兩者都為塊級作用域;const 宣告的變數都會被認為是常量,意思就是它的值被設定完成後就不能再修改了:

const a = 1

a = 0 //報錯

const student = 

student.name = 'yy';// 不報錯

student = ;// 報錯

有幾個點需要注意:

let 和 const 宣告只在最靠近的乙個塊中(花括號內)有效

當使用常量 const 宣告時,請使用大寫變數,如:capital_casing

const 在宣告時必須被賦值

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 中,箭頭函式就是函式的一種簡寫形式,使用括號包裹引數,跟隨乙個 =>,緊接著是函式體;

箭頭函式最直觀的三個特點。

// es5

var add = function (a, b) ;

// 使用箭頭函式

var add = (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 letter = ['a', 'b', 'c'];

letter.size = 3;

for (let letter of letters)

// 結果: a, b, c

for...in 用來遍歷物件中的屬性:

let stu = ['sam', '22', '男'];

stu.size = 3;

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 = new student(); // "i'm a student."

stu.study(); // "study!"

stu.read(); // "reading now."

類中的繼承和超集:

class phone } 

class mi extends phone }

let mi8 = new mi();

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 中絕大多數的特性。1.不一樣的變數宣告 const和letvar x 全域性變數 consol...

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

ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。1.不一樣的變數宣告 const和let 在es6之前,我們往往這麼處理模板...