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循环外部访问
}