如果我有一个类似下面代码的闭包,我怎么能得到' a'关闭之外的参数。 JS引擎使用范围链来找到' a'当我打电话给关闭时,但是有机会获得“关闭”。来自全球背景的价值?
function fn(a){
return function f(b){
console.log(a + " " + b);
}
}
BR,Igor
答案 0 :(得分:1)
一些技巧是将它分配给函数对象:
function fn(a){
function f(b){
console.log(a + " " + b);
}
f.a = a;
return f;
}
所以你可以这样做:
const result = fn(2);
console.log(result.a, result(2));
然而,闭包是为了封装东西。如果您不想这样,则不应使用闭包。
答案 1 :(得分:0)
var count=0;
function add(){
return count+=1;
}
function sub(){
return count-=1;
}
function increment(){
document.getElementById("element").innerHTML=add();
}
function decrement(){
document.getElementById("element").innerHTML=sub();
}
<button type="button" onclick="increment()">Increment!!</button>
<button type="button" onclick="decrement()">Decrement!!</button><br><br><br>
<div id="element"><div>