下面是js代碼的兩個樣品:的Javascript全局上下文的可變對象VS功能激活對象
A.功能_foo被全局上下文
function _foo(){ //some code here
}
//... some unrelated code here
var foo = function(){
var result = _foo();
return result;
}
B.功能_foo定義內定義在功能範圍內
var foo = function(){
function _foo(){ //some code here
}
var result = _foo();
return result;
};
其中之一是一個在內存管理方面的編程實踐?由於函數foo
將在應用程序中多次調用,因此在應用程序的全局上下文中保留_foo
並且不在函數上下文中每次調用foo
時都更好?或者由於_foo
將(大部分)在foo
內部使用,因此將其保留爲激活對象的一部分是有意義的?
這兩個例子有不同的語義。使用表達所需語義的「最清晰」版本。擔心表現時 - 或者說 - 如果 - 它成爲一個問題。 (哦,'_foo'在上面的「全局上下文」中永遠不會被定義 - *每個*函數作用域都會引入一個新的執行上下文。) – 2011-06-17 07:31:52
正確的,「全局上下文」在這裏是一個誤稱,因爲'_foo'在一個匿名函數的範圍。我只是編輯了代碼以避免混淆。目的是區分我懷疑的案件。 – fenderplayer 2011-06-17 07:38:32
[正在刪除本地函數的一個微優化](http://stackoverflow.com/questions/4747581/is-not-having-local-functions-a-micro-optimisation)。 @fenderplayer它也取決於你的瀏覽器範圍,對於你不關心的FF4和Chrome,你在乎IE6支持低劣的JScript引擎。 – Raynos 2011-06-17 07:50:47