es6學習總結

2021-09-11 18:56:31 字數 4704 閱讀 2448

一、let和const

1.let宣告的變數只在它所在的**塊有效。

2.let宣告的變數僅在塊級作用域內有效。

3.不存在變數提公升。

4.每個let宣告的變數都有各自的作用域。它所宣告的變數一定要在宣告後使用,否則報錯

5.暫時性死區;只要塊級作用域內存在let命令,它所宣告的變數就「繫結」(binding)這個區域,不再受外部的影響

6.不允許重複宣告let不允許在相同作用域內,重複宣告同乙個變數

7.含有塊及作用域 允許塊級作用域的任意巢狀

8.允許在塊級作用域之中宣告函式。

9.do表示式加上do就能得到塊及作用域的返回值

10.有六種宣告方法:var let const import function class

11.es6中頂層物件不是window是global

二、解構賦值

let[a,b,c]=[1,2,3]

let[foo,[[baz],faa]]=[1,[[2],3]]

let[a,y,...z]=[『a』];//a=』a];y=undefinded;z=;

如果等號的右邊不是陣列將會報錯

let[x,y,z]=new set([『a』,』b』,』c』])

只要某種資料結構具有 iterator 介面,都可以採用陣列形式的解構賦值

解構賦值允許指定預設值 let[a=true,a]=[『a』,』b』];

let[a=true,b]=[undefined,』b』];//a=true,b=』b』

let[a=true,b]=[null,』b』];//a=null,b=』b』

let[x=y,y=1]=[1,2]//報錯

let[x=1,y=x]=[2];//x=2,y=2;

let=//

let=//undefined

let=//』b』

三、字串的擴充套件

1.字串的遍歷介面 for...of

2.at(index)

3.includes(string)

4.startswidth(string)//以什麼開頭

5.endswidth(string)//以什麼結尾

6.repeat(number)//重複n遍

7.padstart(number,string)//頭部補全

8.padend(number,string)//尾部補全

四、數值的擴充套件

0b二進位制表示

0o八進位制表示

number.isfinite()//檢查乙個數是否有限

number.isnan()//檢查乙個數是否為nan

number.parseint()

number.parsefloat()

number.isinteger()

number.epsilon

number.issafeinteger()則是用來判斷乙個整數是否落在這個範圍之內範圍在-2^53到2^53之間

math.trunc方法用於去除乙個數的小數部分,返回整數部分

math.sign()math.sign方法用來判斷乙個數到底是正數、負數、還是零。對於非數值,

五、函式的擴充套件

1.能直接為函式的引數指定預設值

2.rest 引數(形式為...變數名)

3.name屬性返回函式名字

4.箭頭函式

5.函式繫結運算子是併排的兩個冒號(::),雙冒號左邊是乙個物件,右邊是乙個函式

foo::bar(...arguments);

六陣列擴充套件

1 .擴充套件運算子

array.push(...items)和add(...numbers)

// es6的寫法function f(x, y, z)

let args = [0, 1, 2];

f(...args);

array.from();

array,of()

陣列複製

const a1 = [1, 2];

const a2 = a1;

a2[0] = 2;

a1 // [2, 2]

const a1 = [1, 2];

const a2 = a1.concat();

a2[0] = 2;

a1 // [1, 2]

合併陣列

// es5[1, 2].concat(more)

// es6[1, 2, ...more]

array.from()array.from方法用於將兩類物件轉為真正的陣列:類似陣列的物件(array-like object)和可遍歷(iterable)的物件

array.of(a,b,c)array.of方法用於將一組值,轉換為陣列。

copywithin()

[1, 2, 3, 4, 5].copywithin(0, 3)

// [4, 5, 3, 4, 5]

上面**表示將從 3 號位直到陣列結束的成員(4 和 5),複製到從 0 號位開始的位置,結果覆蓋了原來的 1 和 2。

find(function(){})陣列例項的findindex方法的用法與find方法非常類似,返回第乙個符合條件的陣列成員

findindex()陣列例項的findindex方法的用法與find方法非常類似,返回第乙個符合條件的陣列成員的位置

fill方法使用給定值,填充乙個陣列。

陣列例項的 entries(),keys() 和 values()

keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。

array.prototype.includes方法返回乙個布林值,表示某個陣列是否包含給定的值,與字串的includes方法類似

陣列的空位指,陣列的某乙個位置沒有任何值。比如,array建構函式返回的陣列都是空位。

七物件的擴充套件

object.is()它用來比較兩個值是否嚴格相等,與嚴格比較運算子(===)的行為基本一致。

object.is('foo', 'foo')

同之處只有兩個:一是+0不等於-0,二是nan等於自身。

object.assign()物件的合併

object.assign(target, source1, source2);

如果undefined和null不在首引數,就不會報錯。

object.assign方法實行的是淺拷貝,而不是深拷貝。

對於這種巢狀的物件,一旦遇到同名屬性,object.assign的處理方法是替換,而不是新增。

object.assign([1, 2, 3], [4, 5])

// [4, 5, 3]

物件的遍歷

for...in

for...in迴圈遍歷物件自身的和繼承的可列舉屬性(不含 symbol 屬性)

object.getprototypeof該方法與object.setprototypeof方法配套,用於讀取乙個物件的原型物件。

箭頭函式

箭頭函式的語法非常簡單,看一下最簡單的箭頭函式表示法

() => console.log('hello')

之前沒有接觸過箭頭函式的人可能會驚訝於其**的簡潔。對比之前如果要寫乙個這樣的函式

function()

和普通函式的區別:

從上面的例子中,我們已經可以看出箭頭函式的優勢。和普通函式相比,

箭頭函式主要就是以下兩個方面的特點

1.不繫結this,arguments

2.更簡化的**語法

什麼時候不能用箭頭函式

1.作為物件的方法

最好不要在物件的方法中使用箭頭函式,這樣可能會導致一些問題的產生。

除非你很熟悉箭頭函式。

2.不能作為建構函式

由於箭頭函式的this不繫結的特點,所以不能使用箭頭函式作為建構函式,

實際上如果這樣做了,也會報錯。

3.定義原型方法

super 和 extends 使用新的super和extends關鍵字擴充套件類:

1.super 必須在 this 之前被呼叫

在子類建構函式中,在使用 this 之前,必須先呼叫超級類。

constructor(tartnesslevel, energy) }

promises in es6

下面是乙個簡單的用settimeout()實現的非同步延遲載入函式:

settimeout(function() , 1000);

var wait1000 = new promise(function(resolve, reject) ).then(function() );

ES6學習總結

1.建立 let x newset 2.特性 對基本資料型別,會自動去重 3.方法 x.add 新增 x.delete 刪除 x.has 刪除是否存在,返回布林 x.clear 清空 x.keys 返回鍵名的遍歷器 x.values 返回鍵值的遍歷器 x.foreach function 遍歷 ar...

ES6學習總結 四

與大多數物件導向語言不同,js建立之初不支援類,在es1 es5很多庫建立了一些工具來讓js顯得好像支援類 直到es6正式引入類。es6類的宣告是以class關鍵字開始後面緊跟類名,類宣告中有constructor方法可以直接定義乙個構造器。例class personclass 類和之前的函式構造器...

ES6學習總結 六

在運用react vue等流行框架到時候,我們發現每個 塊都是分離的,每個js檔案中定義的內容都只在本區域有作用。這就是es6引入的模組化的概念,在此之前,乙個應用的每個js檔案所定義的所有內容都由全域性作用域共享。模組與指令碼的不同 模組的載入方式是與js原先指令碼載入方式有所區別的 1 模組 自...