函数闭包
Function closures
您好,我正在尝试 运行 以下功能:
function add (a, b) {
return a + b;
}
var make_lazy = function (add, a, b) {
return function () {
add(a,b);
}
}
基本上我要做的是将另一个函数作为参数及其参数传递给 make_lazy 函数 - 然后 运行 作为参数传入的函数与其他两个参数。当我尝试 运行 代码时,我得到 undefined is not function 作为错误。
我认为你正在尝试这样的事情。
function add (a, b) {
return a + b;
}
var make_lazy = function (a, b) {
return function () {
return add(a,b);
}
}
然后你可以调用var lazy = make_lazy(3,5);
然后调用lazy()
得到8
您忘记了从 make_lazy 返回的匿名函数中的 return
语句:
var make_lazy = function (add, a, b) {
return function () {
return add(a,b) // <----- here
}
}
将你的惰性函数体包裹在一个自调用函数中 return。
function add (a, b) {
return a + b;
}
var make_lazy = function (add, a, b) {
return (function () {
add(a,b);
})();
}
这是我的观点。
当您将函数分配给 make_lazy 变量时,之后您应该使用与该函数定义中相同的参数调用 make_lazy():
make_lazy(function expression, a, b);
这部分:
function (add, a, b)
只是使add成为一个局部变量,这与上面定义的add(a,b)不同
要使代码正常工作,请尝试将 make_lazy 调用为
make_lazy(add, 3, 4)
您好,我正在尝试 运行 以下功能:
function add (a, b) {
return a + b;
}
var make_lazy = function (add, a, b) {
return function () {
add(a,b);
}
}
基本上我要做的是将另一个函数作为参数及其参数传递给 make_lazy 函数 - 然后 运行 作为参数传入的函数与其他两个参数。当我尝试 运行 代码时,我得到 undefined is not function 作为错误。
我认为你正在尝试这样的事情。
function add (a, b) {
return a + b;
}
var make_lazy = function (a, b) {
return function () {
return add(a,b);
}
}
然后你可以调用var lazy = make_lazy(3,5);
然后调用lazy()
得到8
您忘记了从 make_lazy 返回的匿名函数中的 return
语句:
var make_lazy = function (add, a, b) {
return function () {
return add(a,b) // <----- here
}
}
将你的惰性函数体包裹在一个自调用函数中 return。
function add (a, b) {
return a + b;
}
var make_lazy = function (add, a, b) {
return (function () {
add(a,b);
})();
}
这是我的观点。
当您将函数分配给 make_lazy 变量时,之后您应该使用与该函数定义中相同的参数调用 make_lazy():
make_lazy(function expression, a, b);
这部分:
function (add, a, b)
只是使add成为一个局部变量,这与上面定义的add(a,b)不同
要使代码正常工作,请尝试将 make_lazy 调用为
make_lazy(add, 3, 4)