function funcA(){
var name = "jack";
console.log(name);
return function(){
name = name + " plus";
console.log(name);
};
}
var funB = funcA();
funB()
// expected result: "jack" and "jack plus"
我很困惑为什么runnnig var funB = funcA();
只输出"jack"
?
为什么第二句输出没有?为什么必须第二次按预期输出?
答案 0 :(得分:0)
它有效,尝试运行:
function funcA(){
var name = "jack";
console.log(name);
return function(){
name = name + " plus";
console.log(name);
};
}
var funB = funcA();
funB();

答案 1 :(得分:0)
var funB = funcA();
表示执行funcA,而funcA只返回匿名函数。没有“()”,它将不会执行此功能。
答案 2 :(得分:0)
当你调用funcB = funcA();
时它运行funcA()
即console.log(name);
,然后在第4行返回匿名函数返回。这将返回函数赋给funcB(就像我们一样)做var someName = function(){ // do something}
)。因此,要运行该功能,您需要调用funcB();
function funcA(){
var name = "jack";
console.log(name);
return function(){
name = name + " plus";
console.log(name);
};
}
var funcB = funcA();
//Output:- jack
console.log(funcB);
/*Output:- f (){
name = name + " plus";
console.log(name);
}
*/

答案 3 :(得分:0)
当你调用funcA()" var funB = funcA()"。它记录" jack"然后它返回一个函数。如果返回一个函数,它不会自动先运行它。你只能在调用它时运行它" funB();"。