javascript 迴圈語句
javascript 有很多的迴圈語句,下邊我來總結並用個人的語言分析一下
For迴圈舉例:ES5 中就支援
例如在控制檯輸出0-99:
1:for(var i=0;i<100;i++){
// var i=0; 迴圈語句中所需變數的初始化
// i<100; 迴圈條件,當變數不能滿足這個條件時,停止迴圈
// i++ 迴圈條件,變數自增或自減或其他,變數值不斷改變直到滿足上邊條件位置
console.log(i)
}
For in迴圈: ES5 中就支援,可取出陣列中所有下標和值
var arr=[1,'hello',false]
for(var index in arr){
// var index in arr 中的index是宣告的一個變數,這個變數在 arr 陣列中找index,下方例子會告訴你找的是什麼
console.log(index) // 輸出 0,1,2 很顯然這個for in迴圈是找陣列中的所有元素的下標值,若想找出每個元素值,如下:
console.log(arr[index]) // 輸出1,hello,false
}
For of迴圈:此迴圈需要在ES6的環境下執行,可取出陣列中所有值
var arr=[1,'hello',false]
for(let value of arr){
// var value in arr 中的value 是宣告的一個變數,這個變數在 arr 陣列中找value,輸出此陣列中所有值
console.log(value ) // 輸出1,hello,false
}
vhile迴圈:ES5 就可執行,先判斷在執行
var i = 0; // 變數的宣告
while (i < 100){
// i<100 只要 i 滿足這個條件時,就迴圈
console.log(i);
i++; // 變數自增,直到條件不滿足時停止
}
do…while迴圈:ES5 就可執行,可理解為執行某個命令知道條件不滿足為止,先執行後判斷,意思是最少執行一次
var i = 0;
do{
console.log(i);
i++; // 變數自增,直到條件不滿足時停止
} while( i < 100) // 此處為條件,當此處條件為false時,此函式只執行一步。
ES5 和 ES6中var和let的小區別
var 和 let 所宣告函式的作用域是不同的,
var 宣告的變數作用域是當前函式(function中),而let宣告的變數僅限於當前作用域,類似於此迴圈內,例如一個大括號中,出了這個大括號就不可以使用了,當兩個都在function中宣告時,沒有明顯的差別,但是當中間有for迴圈時,就會影響變數的執行環境。
例如:
function(){
for(var i=0;i<100;i++){
}
console.log(i)
// 如果使用的是var的話,最後會輸出99,
// 如果改變成let的話,此處會報錯,因為已經脫離了for環境,變數i無法在for迴圈外部訪問
}