Допустим, я определил функцию типа
var f = function(cb){cb()};
Теперь, если я передам функцию обратного вызова, она будет работать:
f(()=>{console.log("ccb")}); //print: ccb
Но если я передам аргумент, в этом случае x будет неопределенным:
f((x)=>{console.log("x:"+x);}); // x will be undefined
, поэтому одним из решений является использование замыкания,
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 даже не вызывается. Почему? Как мы можем использовать эту встроенную функцию, чтобы она работала? Я изучаю замыкания, поэтому хотел понять это. Любая помощь приветствуется.