【发布时间】:2018-12-22 03:00:38
【问题描述】:
我对 JS 很陌生,我只是在玩弄语法。
当我打电话时
budgetController.publicTest2();
我明白了:
46 未定义
我希望是 46,但为什么我也得到未定义?
完整代码:
var budgetController = (function() {
var x = 23;
function add(a) {
return a + x;
}
return {
publicTest: function() {
const y = add(23);
return y;
},
publicTest2: function() {
return (function(d){
console.log(d());
})(budgetController.publicTest);
},
}
})();
budgetController.publicTest2();
【问题讨论】:
-
您是在控制台还是在某个 repl 中运行它?它不会记录
undefined,但budgetController.publicTest2()的结果是未定义的。您应该考虑将其设为一个可运行的 sn-p(使用编辑器中的<>按钮)来演示该问题。 -
我将其设为可运行的 sn-p,但在 sn-p 控制台中看不到它。我在 firefox/chrome 中看到它。
-
很好,下面 Vedran 的回答解释了这种行为。控制台只是打印函数返回的值,这是未定义的,因为它没有返回任何东西。
标签: javascript iife