在javascript

时间:2019-01-10 12:52:04

标签: javascript

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

。 我期望的是第一,然后是第二,但不是不确定的。这种未定义的原因是什么?

2 个答案:

答案 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()时,它们已经登录了firstsecond,但是它们什么也没有返回。因此,最后的console.log调用将记录被调用方法的返回值undefined。只需致电

Module.publicmethod1();
Module.publicmethod2();

然后您不会得到任何undefined