-6

有人可以告诉我这里发生了什么(在 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

额外的未定义来自哪里?

4

1 回答 1

1

控制台输出您正在执行的函数的返回值。

看看如果你在你的函数中放一个 return 语句会发生什么,例如

return function () {
    console.log(msg, name);
    return "If you run me from console you'll see this line";
}
于 2013-08-16T10:04:18.627 回答