ES6學習筆記

2021-07-31 20:47:15 字數 3353 閱讀 7132

常用語法:

1、let

與var類似,不同的是let定義的變數有塊級作用域,比如:

var a=1;

while(true)

alert(a); //2

//用let:

let a=1;

while(true)

alert(a); //1

2、const用來定義變數,但是定義之後的值不能再次更改了。

乙個實際的用途是用來定義引入的模組,避免重新命名導致出錯。

const hello = require('hello')
3、class、super、extends

es6引入了類的概念,extends是用來繼承的

**如下:

class

animal

eat(food)

}let animal = new animal();

animal.eat('water') //animal eat water

class

dogextends

animal

says(say)

}let dog = new dog();

dog.eat('bone'); //dog eat bone

dog.says('www'); //dog says www

其中的constructor方法就是構造方法,而this關鍵字則代表例項物件。簡單地說,constructor內定義的方法和屬性是例項物件自己的,而constructor外定義的方法和屬性則是所有實力物件可以共享的。

4、箭頭函式 arrow function

簡潔的表示了函式:

function

(i)es6可以寫為: (i) => i + 1;

複雜一點的要加{},例如:

function

(x,y)

寫為:(x,y) =>

除了簡潔之外,箭頭函式中的this永遠是指向當前的物件。

這就避免了一些this的指向,比如settimeout()中的this是指向全域性物件,經常導致要求的結果不一樣。例如:

settimeout(function())

es6: settimeout(() => )//this指向當前物件

5、模板字串,比如之前的:

"there are" + basket.count + "" +

"items in your basket, " +

"" + basket.onsale +

" are on sale!"

);字串和變數拼接麻煩,現在es6可以這樣:

`there are$items in your basket, $ are on sale!`

); //用反引號來表示字串,用${}來表示變數,並且{}裡面可以是任意js表示式,可以進行運算等,`其中的空格和縮排都會保留出來。

如果不要保留換行可以用trim()方法去掉,放在反引號後

`there are$items in your basket, $ are on sale!`.trim()

);6、es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(destructuring)。

以前,為變數賦值,只能直接指定值。

let a = 1;

let b = 2;

let c = 3;

es6允許寫成下面這樣。

let [a, b, c] = [1, 2, 3];
本質上,這種寫法屬於「模式匹配」,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值。

如果右邊的個數多於左邊,但是模式相同,這種情況叫解構不完全,但是可以成功。

如果右邊個數小於左邊,則解構不成功。

//不成功

let [x, y, ...z] = ['a'];

// x:"a"

// y:undefined

// z:

//不完全

let [a, [b], d] = [1, [2, 3], 4];

a // 1

b // 2

d // 4

如果右邊不是陣列就會報錯

// 報錯

let [foo] = 1;

let [foo] = false;

let [foo] = nan;

let [foo] = undefined;

let [foo] = null;

let [foo] = {};

7、函式的預設引數值

es5是不能直接為函式指定預設引數的,只能變通的方法:

//傳統方法

function

a(x,y)

a('friend');

//friend hello

a('friend','bye') //friend bye

a('friend','') //friend hello

//es6方法

function

a(x,y='hello')

a('friend');

//friend hello

引數變數是預設宣告的,所以不能用let或const再次宣告。

function

foo(x = 5)

8、es6 引入 rest 引數(形式為「…變數名」),用於獲取函式的多餘引數,這樣就不需要使用arguments物件了。rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中。

function

animals

(...types)

animals('cat', 'dog', 'fish') //["cat", "dog", "fish"]

9、遍歷器

es6引入了其他語言如pyhton的for…of…,進行迭代,適用於陣列,一些類陣列的物件:

const arr = ['red', 'green', 'blue'];

for(let v of arr)

ES6學習筆記

let 塊變數 作用域為塊 const 常亮 作用域為當前塊 解構賦值 例 var x,y 1,2 字元擴充套件 at includes startswith endswith repeat codepointat 模板字串 例 正則的uiy 數值擴充套件 number.isfinite numbe...

ES6學習筆記

var 有變數提公升 let 是塊級作用域,沒有變數提公升 模板語言 還原百分百定義的格式 const 定義常量,特殊情況可以改變值 const b 1 b 2 error const b b.a 2 ok b.c 10 ok object是記憶體位址,位址不變就沒問題 預設值 在不知道接收到個什麼...

ES6學習筆記

es6 字串的開頭 末尾查詢,重複輸出,向前 後新增字串 str.endswith 在str的末尾查詢 str.startswith 在str的開頭查詢 str.includes 在str中查詢 有就返回true,沒有就返回false str.repeat 次數 使str重複輸出幾次 次數 let ...