2016-01-12 39 views
0

在相同範圍內傳遞一個對象是否會花費任何可觀的延遲?考慮下面的選項1和選項2。在第一個選項中,我只是直接使用對象。選項2是封裝的更好的做法,但是讓我們說,無論如何,我都在相同的範圍內執行 - 這是否更慢(假設有數百個屬性的巨大數組對象)?在相同的範圍內傳遞一個對象以使其功能變慢?

var sampleObject = {id:2, objString = 'something'}; 

選項1:

function addPropToObject(){ 
sampleObject.someNewProp = 'lalala' 
} 

選項2:

function addPropToObject(obj){ 
obj.someNewProp = 'lalala' 
} 

addPropToObject(sampleObject); 

AngularJs標籤只是存在的情況下是有區別的,如果函數是:

$scope.adPropToObject = function(){.... 

雖然imo根本不重要。如果你能想到更好的標題,請隨意更改標題。

+0

這取決於實現,但是如果該變量已經在相同的作用域中可用,那麼在將其作爲參數傳遞時沒有多大用處。 – adeneo

+0

我明白(如問題所述),這更像是一個假設性問題。 – VSO

+1

訪問外部作用域中變量的運行時成本非常小,在現代運行時中可能爲零。這絕對不值得擔心。 – Pointy

回答

2

這一切都取決於JS引擎如何實現。選項1可能會比較慢,因爲它必須向上移動一個(或多個)示波器才能找到sampleObject。選項2可能會比較慢,因爲它必須將sampleObject推入堆棧,並在訪問obj時將其關閉。你可以自己寫一個jsPerf並測試響應時間。

+1

我對此沒有任何特別的應用 - 我只是發現自己寫了一切使用選項2「爲了清晰」,並假設我將選項移到輔助方法中,所以我想知道是否有一些總是適用的規則。似乎沒有,我很欣賞你的答案。 – VSO

相關問題