[英]Is the JSlint warning `redeclaration of var counter` necessary?
我的腳本長了幾行,並且有很多類似的標志類型
var counter = 0;
var carFlags = {
Audio : counter++ ,
Bentley : counter++ ,
Chrysler : counter++
Datsun : counter++
...
};
以后如果我以相同的方式創建一個新的標志對象
var counter = 0;
var nameFlags = {
Ashley : counter++ ,
Bronwyn : counter++ ,
Catherine : counter++
DakotaFanning : counter++
...
};
它抱怨計數器被用作更大聲明的一部分,但是我認為在這里它是完全可以接受的。 但是,我在這里使用了counter兩次,因此它警告您必須redeclaration of var counter
。 我可以將var counter
移到頁面頂部,但這可能會使它不清楚用於什么counter
。 多次使用var是否有任何實際問題? 我有一個delete counter
聲明,但它什么也沒做。 我應該更改它以delete window.counter
嗎?
我不太確定您在這里的作用域,但是如果它是全局作用域,那么delete counter
確實不會執行任何操作。 同樣,也不需要delete window.counter
(如果我們處於全局范圍內的瀏覽器環境中),那還是一樣。
如果您想重新使用該變量-一個簡單的分配即可:
counter = 0
我相信JSLint抱怨的原因是警告您,您可能打算重新使用計數器並意外鍵入var
(對我來說不止一次發生)。
是絕對的(從稍微增加JS文件的大小用戶的瀏覽器將不得不拋開你的加載頁面時下載)宣布同一個變量兩次在同一范圍內沒有壞處。
編輯:
當然,還有一個問題,為什么您要使用相同的名稱...
不,沒有問題。 實際上,在Javascript中,無論如何,變量聲明(帶有var
)都會自動提升到其封閉范圍的頂部。 例如,以下內容:
var n = 5;
if (n < 3) {
var q = 2;
var n = 4;
}
等效於:
var q, n=5;
if (n < 3) {
q = 2;
n = 4;
}
給他們唯一的名稱,您將沒有任何問題。
var carCounter = 0;
var nameCounter = 0;
您也不會遇到任何難以發現的錯誤,因為您將相同的變量用於兩個不同的任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.