有人可以告诉我这里发生了什么(在Firefox和Chrome中测试过)。
我有一个简单的函数返回一个闭包。
function say (name) {
var msg = 'hallo';
return function () {
console.log(msg, name);
}
}
var sayName = say('joe');
sayName();
如果检查浏览器控制台,我会得到预期的结果:
Hallo Joe
但是,如果我遗漏最后一行并从控制台运行sayName(),我会得到以下结果:
Hallo Joe
undefined
额外的未定义来自何处?
答案 0 :(得分:1)
控制台输出您正在执行的函数的返回值。
如果你在函数中放置一个return语句,那么看看会发生什么。
return function () {
console.log(msg, name);
return "If you run me from console you'll see this line";
}