ES6學習記錄

1、let 和 const 命令

let正則表達式

一、let用來聲明變量,只在本身的代碼塊中生效數組

二、let不存在變量提高數據結構

3、暫時性死區:若是區塊中存在letconst命令,這個區塊對這些命令聲明的變量,從一開始就造成了封閉做用域。凡是在聲明以前就使用這些變量,就會報錯dom

4、不容許重複聲明函數

5、存在塊級做用域(緣由:循環中的變量成了全局變量)spa

6、塊級做用域中能聲明函數,可是相似於let,不能在塊級做用域外使用,塊級做用域必須有大括號prototype

Const指針

一、聲明一個只讀的變量,一旦聲明當即初始化,不能留到後邊賦值rest

二、只在聲明的塊級做用域中生效code

三、一樣存在暫時性死區

四、不能重複聲明

五、存在塊級做用域

六、簡單數據類型來講是值不能改變,可是對於複雜數據類型來講是指針指向的內存地址不能改變,可是複雜數據類型的值是可變的

Es6六種聲明變量的方法

let  const   function  import  class  var

頂級對象的屬性及全局變量

var命令和function命令聲明的全局變量,依舊是頂層對象的屬性;另外一方面規定,let命令、const命令、class命令聲明的全局變量,不屬於頂層對象的屬性。也就是說,從 ES6 開始,全局變量將逐步與頂層對象的屬性脫鉤

 

 

2、變量的解構賦值

從數組和對象中提取值,對變量進行賦值,這被稱爲解構

1數組的解構賦值

(1) 能夠從數組中提取值,按照對應位置,對變量賦值

(2) 若是解構不成功,變量的值就等於undefined

(3) 等號左邊的模式,只匹配一部分的等號右邊的數組。這種狀況下,解構依然能夠

(4) 解構賦值容許指定默認值

 

2對象的解構賦值

(1) 對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值

(2) 對象的解構也能夠指定默認值

三、字符串的解構賦值

(1) 字符串也能夠解構賦值。這是由於此時,字符串被轉換成了一個相似數組的對象

四、數值和布爾值的解構賦值

(1) 只要等號右邊的值不是對象或數組,就先將其轉爲對象。因爲undefinednull沒法轉爲對象,因此對它們進行解構賦值

五、函數參數的解構賦值

(1) 參數中傳入數組的話函數中會自動識別數組中的項

(2) 函數參數部分使用對象能夠設置默認值

6圓括號問題

7用途

交換變量的值

從函數返回多個值

函數參數的定義:解構賦值能夠方便地將一組參數與變量名對應起來。

提取 JSON 數據解構賦值對提取 JSON 對象中的數據,尤爲有用。

函數參數的默認值

遍歷 Map 結構

輸入模塊的指定方法

3、字符串的擴展

ES6 增強了對 Unicode 的支持,容許採用\uxxxx形式表示一個字符,其中xxxx表示字符的 Unicode 碼點

ES6 爲字符串添加了遍歷器接口(詳見《Iterator》一章),使得字符串能夠被for...of循環遍歷

模板字符串:反引號標識,能夠單行也能夠多行,或者在字符串中嵌入變量,模板字符串中若是使用反引號要進行轉義,空格和換行會被保留,若是想去除換行的話在模板字符串後邊使用trim方法消除它,變量寫在${}中,大括號中能夠放入任意js表達式,能夠進行運算,以及應用對象屬性,能夠調用函數。大括號中的值不是字符串將默認調用對象的toString方法。大括號中若是是字符串將原樣輸出。模板字符串能嵌套,

4、字符串的新增方法

String.fromCodePoint()用於從 Unicode 碼點返回對應字符,可是這個方法不能識別碼點大於0xFFFF的字符

String.raw()該方法返回一個斜槓都被轉義(即斜槓前面再加一個斜槓)的字符串,每每用於模板字符串的處理方法

實例方法:codePointAt()

實例方法:normalize()

實例方法:includes(), startsWith(), endsWith()包含參數字符串,以參數字符串開始結尾

實例方法:repeat()返回新的字符串,將指定的字符串重複n次,參數不能爲負

實例方法:padStart()padEnd()字符串不夠指定長度在開頭(結尾)以指定字符串不全

實例方法:trimStart()trimEnd()消除頭部(尾部)的空格,不會改變原字符串

實例方法:matchAll()返回一個正則表達式在當前字符串的全部匹配

5、正則的擴展

 

6、數值的擴展

1二進制和八進制表示法:二進制和八進制數值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示,若是要將0b0o前綴的字符串數值轉爲十進制,要使用Number方法

2Number.isFinite()檢測是不是有限的,非數值的返回false,  Number.isNaN()用來檢查一個值是否爲NaNNumber.isFinite()對於非數值一概返回false, Number.isNaN()只有對於NaN才返回true,非NaN一概返回false

3Number.parseInt(), Number.parseFloat() 將全局方法parseInt()parseFloat(),移植到Number對象上面,行爲徹底保持不變。

4Number.isInteger()用來判斷一個數值是否爲整數

5Number.EPSILONES6 Number對象上面,新增一個極小的常量Number.EPSILON。根據規格,它表示 1 與大於 1 的最小浮點數之間的差。

6Math.trunc方法用於去除一個數的小數部分,返回整數部分

7Math.sign方法用來判斷一個數究竟是正數、負數、仍是零。對於非數值,會先將其轉換爲數值。

8Math.sign方法用來判斷一個數究竟是正數、負數、仍是零。對於非數值,會先將其轉換爲數值。

9Math.clz32()方法將參數轉爲 32 位無符號整數的形式,而後這個 32 位值裏面有多少個前導 0

10Math.imul方法返回兩個數以 32 位帶符號整數形式相乘的結果,返回的也是一個 32 位的帶符號整數

11Math.fround方法返回一個數的32位單精度浮點數形式

12Math.hypot方法返回全部參數的平方和的平方根

13Math.expm1(x)返回 ex - 1

14Math.log1p()返回1 + x的天然對數,即Math.log(1 + x)。若是x小於-1,返回NaN

15Math.log10()返回以 10 爲底的x的對數。若是x小於 0,則返回 NaN

16Math.log2(x)返回以 2 爲底的x的對數。若是x小於 0,則返回 NaN

  • Math.sinh(x) 返回x的雙曲正弦(hyperbolic sine
  • Math.cosh(x) 返回x的雙曲餘弦(hyperbolic cosine
  • Math.tanh(x) 返回x的雙曲正切(hyperbolic tangent
  • Math.asinh(x) 返回x的反雙曲正弦(inverse hyperbolic sine
  • Math.acosh(x) 返回x的反雙曲餘弦(inverse hyperbolic cosine
  • Math.atanh(x) 返回x的反雙曲正切(inverse hyperbolic tangent

ES2016 新增了一個指數運算符(**

7、函數的擴展

1、函數參數的默認值、與解構賦值默認值結合使用 (通常是在尾部,否則不能省略)

2、函數的length屬性是沒有指定默認值的參數的個數

3rest 參數(形式爲...變量名),用於獲取函數的多餘參數,這樣就不須要使用arguments對象了

4、函數的name屬性,返回該函數的函數名

5、箭頭函數

數組的擴展

一、擴展運算符console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5   [a,b,...c] = [1,2,3,4,5]

① 複製數組

1) 寫法一a2 = a1.concat()const a1 = [1, 2];

2) 寫法二const a2 = [...a1];

3) 寫法三const [...a2] = a1;

② 合併數組  [...arr1, ...arr2, ...arr3]

③ 與解構賦值結合[a, ...rest] = list,只能放在參數的最後一位

④ 字符串 字符串轉數組[...'hello']// [ "h", "e", "l", "l", "o" ]

⑤ 實現了 Iterator 接口的對象能轉化成數組,沒有遍歷器的不能轉化成數組

⑥ Map Set 結構,Generator 函數

 

 

二、Array.from方法用於將兩類對象轉爲真正的數組(dom對象)

三、Array.of()將一組值裝換成數組(彌補Array()只有一個參數的缺陷)

四、數組實例的copyWithin方法,在當前數組內部,將指定位置的成員複製到其餘位置

五、數組實例的find方法,用於找出第一個符合條件的數組成員。它的參數是一個回調函數,全部數組成員依次執行該回調函數,直到找出第一個返回值爲true的成員,而後返回該成員。若是沒有符合條件的成員,則返回undefinedfindindex方法返回的是對應的索引,若是都不符合返回-1(相似於indexof,可是indexof不能發現NaN)(indexOf使用的是嚴格的===因此無法判斷NaN

六、fill方法使用給定值,填充一個數組,數組中已有的元素,會被所有抹去。fill方法還能夠接受第二個和第三個參數,用於指定填充的起始位置和結束位置。(不是深拷貝對象)

七、entries()keys()values()——用於遍歷數組:keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。

八、Includes()用來判斷數組中是否含有某個值,返回布爾值。第二個參數是起始值,默認爲0,負數爲倒數,大於數組長度重置爲0

九、Flat()拉平數組,flat()默認只會「拉平」一層,若是想要「拉平」多層的嵌套數組,能夠將flat()方法的參數寫成一個整數,表示想要拉平的層數,默認爲1

十、flatMap()方法對原數組的每一個成員執行一個函數(至關於執行Array.prototype.map()),而後對返回值組成的數組執行flat()方法。該方法返回一個新數組,不改變原數組。// 至關於 [[2, 4], [3, 6], [4, 8]].flat() [2, 3, 4].flatMap((x) => [x, x * 2]) // [2, 4, 3, 6, 4, 8]

十一、數組的空位,js對數組的空位的處理很不一致,因此要避免使用空位

對象的擴展

 

對象的新增方法

 

Symbol

Symbol是第七種數據類型,表示獨一無二的值,Symbol 值經過Symbol函數生成。這就是說,對象的屬性名如今能夠有兩種類型,一種是原來就有的字符串,另外一種就是新增的 Symbol 類型。凡是屬性名屬於 Symbol 類型,就都是獨一無二的,能夠保證不會與其餘屬性名產生衝突

Set 和 Map 數據結構

Set

ES6 提供了新的數據結構 Set。它相似於數組,可是成員的值都是惟一的,沒有重複的值。能夠用來去重。

  • add(value):添加某個值,返回 Set 結構自己。
  • delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。
  • has(value):返回一個布爾值,表示該值是否爲Set的成員。
  • clear():清除全部成員,沒有返回值。
Map

ES6 提供了 Map 數據結構。它相似於對象,也是鍵值對的集合,可是的範圍不限於字符串,各類類型的值(包括對象)均可以看成鍵。也就是說,Object 結構提供了字符串的對應,Map 結構提供了的對應

相關文章
相關標籤/搜索