1、變數宣告
(1)內層變數覆蓋外層變數(即後面的覆蓋前面的)
(2)迴圈變數的宣告,i值在全域性範圍內有效,所以最後輸出的都是最後一輪i的值
(3)let、const的引入,為js增加了塊級作用域的概念(const一旦宣告,常量的值就不能改變)
(4)const的應用場景,引用第三方庫時,用const宣告
2、原型、建構函式、繼承
引入了class類的概念,先用class定義乙個「類」,裡面有乙個constructor構造方法,this關鍵字代表例項物件。
(1)constructor內定義的方法和屬性是例項物件自己的,而constructor外定義的方法和屬性則是所有例項物件共享的
(2)class之間通過extends關鍵字實現繼承。子類必須在constructor方法中呼叫super方法,否則新建例項時會報錯(這是因為子類沒有自己的this物件,而是繼承父類的this物件,然後對其進行加工。如果不呼叫super方法,子類就得不到this物件。)
(3)es6的繼承機制,實質是先創造父類的例項物件this(所以必須先呼叫super方法),然後再用子類的建構函式修改this。
3、箭頭函式
(1)簡單的寫法
(2)對this重定向、和this繫結的改進。
(3)當我們使用箭頭函式時,函式體內的this物件,就是定義時所在的物件,而不是使用時所在的物件。並不是因為箭頭函式內部有繫結this的機制,實際原因是箭頭函式根本沒有自己的this,它的this是繼承外面的,因此內部的this就是外層**塊的this。
4、模板字串
(1)用反引號來標識起始,用 ${} 來引用變數,而且所有的空格和縮排都會被保留在輸出之中
5、解構
(1)正寫情況、反寫情況均可解構:通過解構賦值的方法,從node物件讀取相應的值重新為這兩個變數賦值
(2)為非同名區域性變數賦值,當使用其他變數名進行賦值時也可以新增預設值,只需在變數名後新增等號和預設值即可
(3)巢狀物件解構:解構模式可以應用於任意層級深度的物件,且每一層都具備同等的功能
6、預設值
(1)給引數指定預設值:當指定的屬性不存在時,可以隨意定義乙個預設值,在屬性名稱後新增乙個等號(=)和相應的預設值即可
7、rest語法:
(1)不定元素,三個點,類似於arguments
8、模組化:import/export
(1)require.js寫法:先定義define,然後再require
(2)commonjs寫法:先require,再exports
(3)es6寫法:先import,再export
export命令除了輸出變數,還可以輸出函式,甚至是類;import則匯入這些變數、函式或類;
用 as 實現一鍵換名;
除了指定載入某個輸出值,還可以使用整體載入,即用星號(*)指定乙個物件,所有輸出值都載入在這個物件上面。通常 星號* 結合 as 一起使用比較合適。
ES6隨筆 重點
es6新增塊級作用域概念。let和const宣告的變數和常量,只在所處的 塊內有效,外部訪問列印 x is not defined.最典型的就是for迴圈中的變數宣告,用var宣告的話,i是全域性變數,每一次迴圈i的值都增加,所以在迴圈內部列印的i就是全域性變數i,所以i列印出來的就是最後一次i 完...
ES6學習摘要(01)(新人學習)
由於最近本人在學習es6,做一些筆記能夠更好的熟悉,就趁此機會來寫一篇關於es6的新人學習摘要吧。希望大佬可以給出一些意見,也希望和我一樣的新人能更好更快的了解和熟悉es6。首先在這邊我要感謝阮大大 有這麼好的入門教程 搬運工,部分內容不講述 其次註明本文只用於本人和其他新手了解熟悉es6,非其他用...
好用的ES6方法
es6提供了array.includes 函式判斷是否包含某一元素,除了不能定位外,解決了indexof的上述的兩個問題。它直接返回true或者false表示是否包含元素,對nan一樣能有有效。const arr1 a b c d e f g h i j k nan console.log arr1...