JavaScript - 为什么我们必须从自调用函数返回一个函数?

Ale*_*lls 1 javascript node.js

此代码有一个运行时错误:

var person = (function(){

    var Person = {

        init: function() {

        },
    };

    return new Person();

    /*return function(){
        new Person();
    }*/

})();

console.log(person);
Run Code Online (Sandbox Code Playgroud)

它说我必须返回一个函数而不是一个普通的Object.

为什么我不能从自调用/匿名外部函数返回一个对象?为什么我必须返回一个函数?

同样,这个改变的代码也给我一个类似的错误:

var person = function(){

    var Person = {

        init: function() {

        },

    };

    return new Person();

    /*return function(){
     new Person();
     }*/

};

console.log(person());
Run Code Online (Sandbox Code Playgroud)

zzz*_*Bov 8

为什么我不能从自调用/匿名外部函数返回一个对象?

可以返回一个对象,这不是代码的错误.

代码的问题在于它Person是一个对象,而不是一个函数.通话new Person()无效.

var person = (function () {
    return {
      name: 'bob'
    };
}());
console.log(person.name);
Run Code Online (Sandbox Code Playgroud)