在看了Node8的特性後的總結,後續慢慢補充。promise
主要是針對一些編碼規範,Node的v8引擎因爲不一樣於其餘語言的解析策略,所以須要注意一些特殊的方面。函數
一、try/catch使用對代碼運行性能影響明顯,儘可能減小使用範圍
寫在for循環體內的try/catch語句可能會與代碼優化引擎衝突,引發反優化/再優化的無窮循環性能
二、儘可能減小使用delete,v8引擎查找動態特性和原型鏈的方式很是複雜,性能較差優化
v8引擎使用C++實現,每一個對象在建立時,底層都會根據原型鏈建立一個對應的hidden class,對象的屬性由隱藏類的屬性表示,
而運行時動態添加的屬性,則以哈希表的形式存儲,使用delete時,若是刪除的是動態屬性,則後續其餘屬性的查找方式也會從hidden class變成hash set,致使後續運行性能降低this
能夠經過將須要刪除的屬性賦值爲undefined來替代delete,JSON.stringify不會輸出值是undefined的屬性編碼
三、debugger關鍵字對代碼性能影響明顯debug
四、關於promise對象
jQuery鏈式寫法的實現核心是,每一個函數調用都返回this。
promise的實現核心思想相似,每一個調用then方法的對象,都須要返回一個thenable的對象原型鏈
五、註釋v8
在低版本的Node代碼中,寫在函數體內部的註釋也會影響v8引擎對代碼的優化過程,進而影響代碼執行效率。
所以,對於性能要求較高的代碼,儘可能減小注釋或集中寫在函數體外部,不影響調用時的執行效率。
六、減小使用多態函數
相似Java中多態的概念,若是一個函數的參數須要同時應對不一樣的變量類型,那麼在Node8中,相比只須要處理一種特定類型參數的函數,運行性能會降低。
在須要注意運行效率的場景下,有必要注意這一點。