var Module = (function() {
var privateMethod = function() {
console.log('Private method');
}
return {
publicmethod1: function() { console.log('first'); },
publicmethod2: function() { console.log('second'); }
}
})();
console.log(Module.publicmethod1());
console.log(Module.publicmethod2());
完全违背我的期望,我得到
first
undefined
second
undefined
。 我期望的是第一,然后是第二,但不是不确定的。这种未定义的原因是什么?
答案 0 :(得分:2)
替换
console.log(Module.publicmethod1());
console.log(Module.publicmethod2());
使用
Module.publicmethod1();
Module.publicmethod2();
您的公共方法已经具有console.log()。
展开...
语句Module.publicmethod1()
不返回任何内容(这意味着它返回undefined
,因此,当您将该语句放入console.log()
调用中时,您将打印该方法的结果,是undefined
。
由于您还在方法中调用console.log()
,因此无需打印方法的结果(因为它们无论如何都不会返回任何内容)。
答案 1 :(得分:0)
当您运行publicmethod1()
和publicmethod2()
时,它们已经登录了first
和second
,但是它们什么也没有返回。因此,最后的console.log
调用将记录被调用方法的返回值undefined
。只需致电
Module.publicmethod1();
Module.publicmethod2();
然后您不会得到任何undefined
。