簡體   English   中英

JSlint警告“必須重新聲明var counter”嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM