ECMAScript 6 知識總結
一、ES6改良ES5的缺陷
1. ES6新增塊級作用域
**在塊級作用域內聲明的變量不會被外層所引用,也就是說不需要ES5通過(函數)閉包來解決全局變量污染的問題. **
- 防止變量在塊級作用域外被訪問.
- let/cont防止變量重聲明.重復聲明會報錯.
- 不需要ES5閉包來解決變量污染的問題
- ES5中循環體的閉包會訪問全局的 i ,而使用let 聲明的循環體會將本次循環變量鎖在塊級作用域內!
2.箭頭函數代替詞法作用域的"this"
在ES5中,"this"會隨着函數調用位置(全局/閉包),和函數調用方式(構造/普通)改變,ES6箭頭函數中的"this"總是指向聲明時的哪個對象
-
在下圖中,我們希望打印一個用戶的名字和薪水。假設我們從服務器異步獲取薪水數據。注意到當服務器返回結果時,函數里的 “this” 是 “window” 而不是 “person”。
3. 處理"arguments"
在ES5中, arguments是一個偽數組,可以使用length來遍歷他,但卻不能使用完全Array的api(slice/sort).
在ES6中,可以使用新特性叫做rest參數,他的形式為 ...參數名,比如...args
,rest是一個真數組,所以至此Array所有api調用.
-
4.類
**從概念上講,在 ES6 之前的 JS 中並沒有和其他面向對象語言那樣的“類”的概念。長時間里,人們把使用 new 關鍵字調用的函數(也叫構造器)當做“類”來使用。 通過原型鏈混亂繼承(不方便) **
-
對比ES5與ES6中實現類
5. 嚴格模式
"use strice",在 ES5 中, 嚴格模式是可選項,但是在 ES6 中,許多特性要求必須使用嚴格模式。 因此大多數開發者和 babel 之類的工具默認添加
use strict
到 JS 文件的頭部,以確保整個 JS 文件的代碼都采用嚴格模式,這個習慣有助於我們寫更好的 JavaScript.**
參考鏈接:https://75team.com/post/5-javascript-“bad”-parts-that-are-fixed-in-es6.html