从函数调用返回对象的函数打印undefined

时间:2015-08-07 18:27:59

标签: javascript jquery javascript-objects

var unique = function(){

var n=0;
return function(){

    return {

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

    };

 };
};

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

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

2 个答案:

答案 0 :(得分:2)

因为您要求记录inc返回的值,并且它不会返回任何内容。

如果您不想打印任何内容,

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

应该是

unique()().inc();

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

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

应该是

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

答案 1 :(得分:2)

你有2个console.log,一个在inc内(打印1),另一个在最后一行,(打印未定义)。

您可以在return n;

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