譯者按: JavaScript從簡單變複雜了,作者從另一個角度看待這個問題。
為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習。
JavaScript從不移除舊的特性,新版本總是向後相容。我希望我們能夠把那些重複的舊的特性清理一下,但是保持相容有太多的好處。我在本文會解釋。
1. 向後相容的優勢
- 遷移到新的語言版本是一件輕而易舉的事情。舉個例子,如果你使用ES6,所有舊程式碼無需任何改動。
- 只有ES模組很難採用,因為它破壞了向後相容性。
- 避免了程式碼版本化。如果你允許一些程式碼是“舊”的,有一些是“新”的:
- 語言引擎和工具變得更加複雜
- 開發人員需要小心應對不同的版本
- 你不能隨意移動程式碼了(如果程式碼基礎庫是混合的)
2. 一些處理JavaScript擴充套件功能的技巧
- 授課和學習:你可以直接忽略舊的特性,不僅僅是它們長什麼樣,它們幹嘛也無需知道
- 使用Linter來輔助碼程式碼
- 使用Prettier來美化程式碼
3. 一個乾淨的JavaScript
如果你想要使用一個比較簡潔的JavaScript,你可以忽略很多舊的語法,下面是一些建議:
- var: 使用let和const
- function: 使用箭頭函式和方法定義(method definition)。優勢:更容易處理this。(具體資訊)
- Promises: 只使用async函式。你不能完全避開使用Promises。
- 迭代訪問物件:使用map
- 迴圈:避免使用for-in,儘量避免使用for, 建議使用for-of。
- 引數:使用rest parameters(…args)
- Function.prototype.apply():使用spread operator(f(..myArray))
- 建構函式:使用class
- IIFEs(立即呼叫函式): 使用塊作用域
4. 待定
typeof和instanceof非常複雜,我無法建議哪個取代哪個。推薦這篇部落格:Beyond typeof and instanceof: simplifying dynamic type checks
5. 閱讀更多
- 章節:一個JavaScript:在ES6中避免版本化
- 章節:ES6的核心特性(哪些ES5的特性被更好的ES6特性替代)
- 章節:Async函式
- 部落格:一種不同的角度去理解JavaScript中的this
關於Fundebug
Fundebug專注於JavaScript、微信小程式、小遊戲BUG監控,自從2016年雙十一正式上線,Fundebug已經服務了一年半時間,累計處理了5億+錯誤事件,得到了眾多知名使用者的認可。Fundebug支援主流前端框架的bug監控,歡迎各位老鐵體驗!