我正在研究 三个,注意到函数的定义是这样的:
var foo = ( function () {
var bar = new Bar();
return function ( ) {
//actual logic using bar from above.
//return result;
};
}());
(示例见 raycast 方法 给你)。
这种方法的 正常变体如下:
var foo = function () {
var bar = new Bar();
//actual logic.
//return result;
};
比较第一个版本与 正常的变化,第一个版本似乎有所不同:
所以主要的区别在于,在第一个变体中,在初始化时,bar 只被赋值一次,而第二个变体在每次调用时都会创建这个临时变量。
对于为什么使用这种方法,我最好的猜测是它限制了 bar 的数量(只有一个) ,从而节省了内存管理开销。
我的问题是: