JavaScript為什麼這麼難?

只有真正的javascript程序員才知道javascript太難了。其他程序員都覺得javascript是門玩具語言。

難點

  • 隱式轉換

javascript的真值表,可以體驗一下。

JavaScript為什麼這麼難?

JavaScript為什麼這麼難?

  • this指向問題

javascript中的this不是靜態綁定的,而是動態綁定的。而且可以人為改變指向。

看看下面這個例子

JavaScript為什麼這麼難?

控制檯將輸出什麼?

  • 閉包

javascript中的作用域是可以通過向上查找的,通過閉包可以讓函數引用底層的作用域變量,可以在高層訪問底層的作用域。好象沒什麼難得。

看看例子

JavaScript為什麼這麼難?

這個例子輸出什麼?

  • 作用域鏈

作用域鏈沒什麼好說的,直接上代碼

JavaScript為什麼這麼難?

為什麼輸出的undefined,不懂的自己去找原因。

  • 原型鏈

javascript使用一種非主流的對象機制,基於原型鏈的對象繼承機制。這需要我們拋棄很多語言的Class的思想。認真研究下這個原型鏈。

JavaScript為什麼這麼難?

理解在對象構造器中this.getName,A.prototype.getName,和A.getName的區別。

  • EventLoop

javascript中代碼不像很多其他語言一樣,代碼是順序執行的。不管是瀏覽器中還是Nodejs中都存在一個EventLoop。讓代碼編碼變得不可控。Nodejs中難度更是成倍增加。

例子:

JavaScript為什麼這麼難?

思考一下,運行結果是什麼?

總結

javascript的難點還沒有全部一一列出。javascript是一門支持多範式的編程語言,說白了就是大多javascript都沒有統一規範,加上javascript高度靈活性,各種奇淫巧技,導致很多代碼難以閱讀。很多難點都是javascript本身自身缺陷造成的。很多最佳實踐其實就是ES6,ES8,ES9...。


分享到:


相關文章: