我在javascript中理解闭包,但我不确定它是如何处理嵌套函数的。例如:
var a = function(o) {
o.someFunction(function(x) {
// do stuff
});
}
我知道每次调用函数a
时都会创建一个新的闭包,但该闭包是否还包含传递给someFunction
的匿名函数的新实例?如果我改为使用ff会更好吗
var b = function(x) { /* do stuff */ }
var a = function(o) {
o.someFunction(b);
}
答案 0 :(得分:3)
在第一个示例中,每次调用a时,都会定义一个匿名函数并将其传递给someFunction()
。这比你在第二个例子中得到的更昂贵,这是更有效的方法,因为函数(现在称为b)只被定义一次。