这无疑已经存在,但在找寻20分钟后我找不到它。唯一号码计数器功能?
我要的是一个计数了,因此第一次调用uniqueNum(函数)则返回0,1,2,然后等
function uniqueNum(){
if (typeof x !== 'number') {
var x = 0;
} else {
x++;
}
return x
}
我不希望任何全局或外瓦尔的希望。
我总是返回0;
这无疑已经存在,但在找寻20分钟后我找不到它。唯一号码计数器功能?
我要的是一个计数了,因此第一次调用uniqueNum(函数)则返回0,1,2,然后等
function uniqueNum(){
if (typeof x !== 'number') {
var x = 0;
} else {
x++;
}
return x
}
我不希望任何全局或外瓦尔的希望。
我总是返回0;
您可以实现一个 “静态” 变量是这样的:
function uniqueNum() {
return uniqueNum.counter = (uniqueNum.counter || 0)+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
我相信检查'uniqueNum.x == null'有点误导(虽然它有效),因为第一次'uniqueNum.x'将返回'undefined',而不是'null'。 – bfavaretto
http://contribute.jquery.org/style-guide/js/#type-checks – gustavohenke
我知道它的工作原理,我的意思是你正在检查'null'或'undefined',但是'uniqueNum.x '永远*不会'空'。对不起,挑剔! – bfavaretto
你可能会由Douglas Crockford的发现“JavaScript中的好的部分”这类提示一个良好的阅读。 –
@DarrenWhite我记得书中有一个例子,但我不记得Crockford是否使用闭包或构造函数属性。我相信它是后者,但我现在没有这本书来检查。你知道这本书使用哪一本吗? – bfavaretto