下面是两个js代码示例:
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
内部使用,因此将其保留为激活对象的一部分有意义吗?
最佳答案
C:缓存
var foo = (function(){
function _foo(){ //some code here
}
return function() {
var result = _foo();
return result;
}
}());
Foo 会立即执行,并且函数 _foo
仅声明一次。
在现代浏览器中,这比“全局”函数慢 5%。
关于Javascript全局上下文的变量对象与函数激活对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6382663/