独特的数字计数器功能

时间:2013-07-26 18:21:58

标签: javascript

这无疑已经存在,但在看了20分钟后我无法找到它。

我想要的只是一个向上计数的函数,所以第一次调用uniqueNum()时它会返回0,然后是1,然后是2等。

function uniqueNum(){
    if (typeof x !== 'number') {
        var x = 0;
    } else {
        x++;
    }
    return x
}

我不希望函数之外有任何全局变量或变量。

我得到的东西总是返回0;

3 个答案:

答案 0 :(得分:7)

封闭可以做到这一点:

var uniqueNum = (function(){
    var num = 0;
    return function(){
        return num++;
    }
}());
uniqueNum(); // 0
uniqueNum(); // 1

“静态”变量也适用,如other answers中所述。

答案 1 :(得分:3)

您可以像这样实现“静态”变量:

function uniqueNum() {
    return uniqueNum.counter = (uniqueNum.counter || 0)+1;
}

答案 2 :(得分:1)

以下将使用函数本身存储计数器:

function uniqueNum() {
    if (uniqueNum.x == null) {
        uniqueNum.x = 0;
    } else {
        uniqueNum.x++;
    }

    return uniqueNum.x;
}

console.log(uniqueNum()); // 0
console.log(uniqueNum()); // 1
console.log(uniqueNum.x); // 1