簡體   English   中英

最有效的javascript方法聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM