可以说,我定义了一个类似的函数
var f = function(cb){cb()};
现在,如果我传递回调函数,它将起作用:
f(()=>{console.log("ccb")});//打印:ccb
但是如果我传递一个参数,在这种情况下 x 将是未定义的:
f((x)=>{console.log("x:"+x);});//x 将是未定义的
所以一种解决方案是使用闭包,
function cba(x){
return function(){
console.log("ccbbaa:"+x)
}
}
f(cba(20)); //will work give output: ccbbaa:20
但是如果我尝试使用 inplace 函数实现闭包,请考虑 xx 已定义。
var xx = 20;
f(function(xx){
return function(){
console.log("xxx: "+xx)
}
});
f 内的回调甚至没有被调用。 为什么?我们如何使用这个内联函数来使其工作?我正在研究闭包,所以想了解这一点。如有任何帮助,我们将不胜感激。
最佳答案
在您的代码中,您没有使用 xx
调用内联函数。您只需将内联函数传递给 f
,它将被执行,但不会打印任何内容,因为被调用的内联函数只是返回另一个函数,而该函数永远不会被调用。
var f = function(cb){cb()};
var xx = 20;
f((function(xx){
return function(){
console.log("xxx: "+xx)
}
})(xx));
关于javascript - JavaScript 中使用内联函数的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59930513/