从函数打印返回的对象调用函数未定义

Invoking function of a returned object from function prints undefined

var unique = function(){

var n=0;
return function(){

    return {

        inc : function(){
            n++;
            console.log(n);
        }

    };

 };
};

console.log(unique()().inc());

上面的代码打印 1 然后打印 undefined 打印 undefined 的原因是什么?

因为您要求记录由 inc 编辑的 return 值,但它 return 什么也没有。

如果您不想打印任何东西,

console.log(unique()().inc());

应该是

unique()().inc();

如果您希望打印 n 的新值,

inc : function(){ n++; console.log(n); }

应该是

inc : function(){ n++; console.log(n); return n; }

你有 2 个 console.log,一个在 inc 中(打印 1),另一个在最后一行,(打印 undefined)。

您可以在 inc

中的第一个 console 之后添加 return n;
    inc : function(){
        n++;
        console.log(n);
        return n;
    }