這無疑已經存在,但在找尋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