【发布时间】:2013-08-18 16:41:56
【问题描述】:
谁能告诉我这里发生了什么(在 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
额外的未定义从何而来?
【问题讨论】:
-
因为控制台会尝试帮助您记录表达式的结果。如果您在控制台中运行
3 + 4,它将记录7。这并不奇怪。 -
@Ashwin,代码的最后一行
sayName();。 @DCoder,我以前从未注意到这一点,这就是为什么它令人惊讶。感谢您的回答。 -
sayname没有返回语句,因此它返回undefined。
标签: javascript closures undefined