这无疑已经存在,但在看了20分钟后我无法找到它。
我想要的只是一个向上计数的函数,所以第一次调用uniqueNum()时它会返回0,然后是1,然后是2等。
function uniqueNum(){
if (typeof x !== 'number') {
var x = 0;
} else {
x++;
}
return x
}
我不希望函数之外有任何全局变量或变量。
我得到的东西总是返回0;
答案 0 :(得分:7)
封闭可以做到这一点:
var uniqueNum = (function(){
var num = 0;
return function(){
return num++;
}
}());
uniqueNum(); // 0
uniqueNum(); // 1
答案 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