2012-05-18 23 views
0

閱讀很多JavaScript庫的代碼,我發現許多開發人員在創建變量後立即使用它們。創建它們後,定義的變量是不好/好/選項?

var i = 0, 
var c = 0; 

我更喜歡在創建它們之後定義的變量。

var i, 
    c; 

i = 0; 
c = 0; 

但是可能有解釋爲什麼這樣或那樣的方式?

+3

在一個函數範圍內,一個var聲明總是放在函數的頂部,所以你聲明它們是內聯還是不重要,它們總是會像執行腳本時的第二種方式一樣聲明。 – mpm

+0

@camus我會投你的評論作爲最好的答案。 – underscore666

回答

1

它是純粹的風格。有些人喜歡將他們的聲明與初始化隔離開來,其他人喜歡一次完成。對於JavaScript引擎,它們實際上是相同的,因爲它在實際執行函數的第一行代碼之前處理var。 (請注意,這與其他語言是如何不同的)。也就是說,它完全一致地處理您的兩個示例:首先,它創建ic,其值爲undefined,並且僅在稍後開始執行分步代碼該函數將其設置i爲0,然後c爲0(這會在一定的深度第10.4.3和規範的第10.5

對於我來說,只要我堅持用簡單的值,我喜歡(儘管我以前一直是一個讓他們分開的「純粹主義者」),但是當我年輕的時候,我做了很多愚蠢的事情)。但我試圖在初始化時避免複雜的邏輯。有時候,我發現我已經把一半的函數寫成了從var開始的一系列以逗號分隔的語句,並且開始難以閱讀和維護,所以我傾向於在那個時候將它們拉出來。

另一方面,讓他們分開的理由是它給你足夠的空間來評論他們。 :-)

0

兩者都可以工作,但是如果你定義你的變量而不初始化它們,並在初始化之前使用它們,這是不好的做法。

0

這是因爲他們將使用條件來設置,如初始值:

var i; 

... code ... 

if(b==something){ 
    i = somevalue; 
} 

... code ... 

a = i + b; 

當b不等於什麼,變量仍然是不確定的。爲了防止這種情況在以後的使用中成爲問題,他們給變量賦予初始化值。

但是,如果在定義它之後直接設置初始值,則不會有任何區別。就像其他人所說的那樣,這是爲了緊湊和可讀性和風格。

0

我認爲這是一個偏好問題。我用過兩個。使用複雜的代碼,第二個例子更好,只要編碼器使用描述性變量名稱即可。我喜歡把它看作告訴讀者我將使用這些變量,所以要留意它們。

另一個考慮因素是範圍。確保你在正確的作用域(global/class/function/etc)中聲明你的變量。如果你將它們聲明得太窄,你會無意中創建兩個不同的變量(這可能非常難以調試)。如果你宣佈它們太寬泛,可能會降低程序效率。

0

你甚至可以使用這種風格:在定義

var a = b = 0; 

初始化變量防止因變量的錯誤沒有設置,有undefined初始JavaScript默認值。

+1

請注意,在使用「嚴格」的代碼中,將爲「未聲明的變量b」引發錯誤 – kennebec

相關問題