假設我們在實現文件處理的對象中。我想編寫代碼以便於閱讀。的代碼當從函數調用返回值時,最新的JavaScript/ECMAScripte編譯器是否優化了不必要的變量賦值?
實施例,其中它可以是難以分辨的返回類型,尤其是當有多個嵌套函數調用:
function create() {
return doCreateAction();
}
該實施例是通過將澄清變量更易讀:
function create() {
var fileHandle = doCreateAction();
return fileHandle;
}
理論上,第二個版本可以執行相同的操作,因爲編譯器必須暫時存儲來自doCreateAction()的結果(可能在某個隱藏的,匿名的,短暫的臨時變量中)。分配給一個命名變量時,這個代碼是否更慢?
「分配給一個指定變量時,這個代碼是否更慢?」你有沒有試圖自己做一些基準測試?無關。我會說你最好重命名你的函數:)爲什麼'doCreateAction'返回的東西更好地描述爲'fileHandle'?你爲什麼不把它叫做'createFileHandle'什麼的。 –
在這樣一個顯而易見的情況下?如果他們不這樣做,我會非常驚訝。我知道這是事實嗎?不,我沒有檢查所有主要JavaScript引擎的優化器代碼(更不用說它們的所有變體;例如,V8目前使用解釋器和編譯器,直到最近它使用兩個編譯器)。 –
你想知道這....爲什麼? – 2017-07-26 11:06:32