目的是实现一个初始值是1,输出,+1,输出,-1,输出
最后想要的结果是 1 2 1
A
var a = function(n)
{
var all = 1;
if(n == "show") {
return function() { return all; };
} else if( n == "add_one") {
return function() { all += 1; return "Add One!"; };
} else if( n == "sub_one") {
return function() { all-= 1; return "Sub One!"; };
}
};
document.writeln(a("show")()); //show
document.writeln(a("add_one")()); //+1
document.writeln(a("show")()); //show
document.writeln(a("sub_one")()); // -1
document.writeln(a("show")()); //show
B
var a = function(n)
{
var all = 1;
return (function() {
if( n == "show") return all;
else if( n == "add_one") { all+=1; return "Add One!"; }
else if( n == "sub_one") { all-=1; return "Sub One!"; }
});
};
document.writeln(a("show")()); //show
document.writeln(a("add_one")()); //+1
document.writeln(a("show")()); //show
document.writeln(a("sub_one")()); // -1
document.writeln(a("show")()); //show
C
var a = function()
{
var all = 1;
return (function(n) {
if( n == "show") return all;
else if( n == "add_one") { all+=1; return "Add One!"; }
else if( n == "sub_one") { all-=1; return "Sub One!"; }
});
};
var xx = a();
document.writeln(xx("show")); //show
document.writeln(xx("add_one")); //+1
document.writeln(xx("show")); //show
document.writeln(xx("sub_one")); // -1
document.writeln(xx("show")); //show
D
var a = function()
{
var all = 1;
return function(n) {
if(n == "show") {
return function() { return all; };
} else if( n == "add_one") {
return function() { all += 1; return "Add One!"; };
} else if( n == "sub_one") {
return function() { all-= 1; return "Sub One!"; };
}
};
};
var b = a();
document.writeln(b("show")()); //show
document.writeln(b("add_one")()); //+1
document.writeln(b("show")()); //show
document.writeln(b("sub_one")()); // -1
document.writeln(b("show")()); //show
哪些是正确答案呢?? 献给JS爱好者,检测一下对闭包的理解~