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`具有詞法作用域。因此,除非您需要在迴圈外部使用相同的變數(或者如果每次迭代都依賴於對前一次迭代中該變數執行的操作),否則最好在變數使用範圍內宣告其作用域。
廣告