【问题标题】:getting undefined with module pattern in javascript [duplicate]在javascript中使用模块模式未定义[重复]
【发布时间】:2019-01-10 12:52:04
【问题描述】:

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

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

【问题讨论】:

    标签: javascript


    【解决方案1】:

    替换

    console.log(Module.publicmethod1());
    console.log(Module.publicmethod2());
    

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

    您的公共方法已经有 console.log()。

    展开...

    语句Module.publicmethod1() 没有返回任何内容(这意味着它返回undefined,因此当您将该语句放入console.log() 调用中时,您将打印该方法的结果,即undefined

    由于您还在方法中调用了console.log(),因此您不需要打印方法的结果(因为它们不会返回任何内容)。

    【讨论】:

      【解决方案2】:

      当您运行 publicmethod1()publicmethod2() 时,它们已经记录了 firstsecond,但它们不会返回任何内容。所以最后一次console.log 调用将记录被调用方法的返回值,即undefined。只需拨打电话

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

      然后你没有得到任何undefined

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 2019-03-04
        • 2023-03-12
        • 2012-10-03
        • 1970-01-01
        相关资源
        最近更新 更多