[英]most efficient javascript method declaration
在編寫JavaScript時,可以用3種不同的方式定義方法。
1]全局名稱空間中的函數
function doSomething();
2]作為函數成員的函數
function Clazz() {}
Clazz.doSomething = function(){};
3]作為函數實例成員的函數
function Clazz() {}
Clazz.prototype.doSomething = function(){};
根據代碼組織的不同,可以選擇一種以上方法。
但是,從性能的角度來看,哪一個是最有效的呢? (尤其是1到2之間)
如果doSomething有參數,您的答案會有所不同嗎?
從純性能POV來看,1應該是最快的。 原因是設置范圍鏈和執行上下文所需的工作較少。 同樣,如果您從函數內部訪問任何全局變量,則僅由於作用域鏈的深度,分辨率將最快為1。 通常,在范圍內(靠近全局),對象在范圍內的速度越快。 出於同樣的原因,訪問屬性ab將比訪問abc更快
在簡單的函數調用的情況下,性能提升可能不會太大,但是如果您說調用函數na循環,則性能提升可能會增加。
這些聲明沒有一個做同一件事,並且不能互換,您希望進行哪種比較? 這就像詢問實例化10個變量或包含10個項目的數組是否更快:一個實例最快,但結果卻不同。
您無法比較函數聲明之間的性能,
例如,在所有3個地方聲明的add(a,b)函數具有相同的性能。 性能取決於您編寫代碼的方式,而不取決於聲明函數的位置...
您缺少最優化的一個:
var x = function(){}
當javascript看到定義時:
function x(){}
然后將其轉換為以前的形式。 如果首先這樣做,則速度可以忽略不計。 但是為了回答您的問題,這是最佳的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.