【发布时间】:2016-01-04 21:58:32
【问题描述】:
为什么直接调用函数与将其作为函数表达式然后调用变量会产生不同的结果?
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
}
console.log(makeFunc());
makeFunc(); //no alert
var myFunc = makeFunc();
console.log(myFunc);
myFunc(); //Yes alert
【问题讨论】:
-
因为第一个从不调用
displayName,而第二个调用(间接)。 -
这是一个闭包。如果您不存储作为函数的返回值并且不调用返回的函数,则代码没有意义。
-
@DarkFalcon 你能帮我解释一下'间接调用displayName函数过程'吗?这就是我的答案!
-
@Vohuman 谢谢你的解释!
标签: javascript function closures