JavaScript變數是在迴圈內還是迴圈外宣告?


人們認為,在迴圈內或迴圈外宣告變數可能會存在一些基於效能的差異,但實際上不會有區別。任何程式語言都允許根據需要宣告變數,這使得使用者更容易閱讀和理解。

因此,在JavaScript中,也可以根據使用者的方便,在函式體內的任何位置,在迴圈內或迴圈外宣告變數。變數宣告本身並不是在執行時執行的命令。如果變數在迴圈外部宣告,則它具有全域性作用域,可以在整個函式中以及迴圈內部使用。如果變數在迴圈內部宣告,則其作用域僅在迴圈內部有效,如果在迴圈外部使用則會報錯。

示例1

此示例展示了兩種型別的變數宣告:

function myFunction1(){ var i //global scope can be used through-out the function //statements for(i=0; i<3; i++){ console.log("Hello"); } } myFunction1(); function myFunction2(){ //statements for(var i=0;i<2;i++){ // 'i' is only defined inside the loop console.log("Welcome"); } } myFunction2();

傳統的程式設計方式是將所有變數都宣告在程式的開頭,初學者學習程式語言時也是這樣學習的。這不會影響效能或任何執行時問題,但是,如果遺漏了任何變數的宣告,並在程式中的任何地方假設它已宣告並使用,則會報錯。

傳統的變數宣告方式在閱讀時可能會影響程式碼流程,而如果在需要的地方宣告變數,則更容易閱讀。

示例2

這是一個展示傳統變數宣告方式的示例:

function myFuntion(){ var a=12 var array=[12,34,56,6] var i=0; // all variables are declared at one place //statements for(i=0;i<array.length;i++){ console.log(array[i]*a); } } myFuntion();

上述示例展示了傳統的宣告方法。程式中使用的所有變數都在開頭宣告。最好在迴圈中宣告變數,因為它的有效性僅限於該程式碼塊,並且該程式碼段可以獨立存在。

因此,無論使用哪種方法,都不會有任何區別。使用者可以選擇在任何地方宣告變數,因為兩種方法產生的輸出結果沒有變化。但是,大多數專業程式設計師只會在需要時宣告變數,或者更具體地說是在迴圈內部宣告。

但是對於`let`來說,情況並非如此。`let`具有詞法作用域。因此,除非您需要在迴圈外部使用相同的變數(或者如果每次迭代都依賴於對前一次迭代中該變數執行的操作),否則最好在變數使用範圍內宣告其作用域。

更新於:2022年8月26日

4K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告