- A+
所属分类:Web前端
JavaScript-流程控制
流程控制分为:条件选择,循环控制
条件选择
if、else
//1. if if(条件){ 执行语句 } //2. if...else if(条件){ 执行语句1 }else{ 执行语句2 } //3. if...else if...else if(条件1){ 执行语句1 }else if(条件2){ 执行语句2 }else{ 执行语句3 }
ps:以上就是if...else组成的三种条件选择,在以后的使用中会非常的频繁,也是编程中最重要的语法,具体采用哪一种看自己爱好
switch语句
switch(值){ case 值1: 执行语句 break; case 值2: 执行语句 break; case 值3: 执行语句 break; default: 执行语句 }
ps:switch 语句不像if判断那样把条件写在圆括号()里面,而是把多个条件写在case后面,满足case后面的值,就执行,直到break就跳出switch语句。
需要注意的是:case可以多个并行在一起,比如这样
switch(值){ case 1: case 2: case 3: console.log('a'); break; case 4: console.log('b'); } 也就是说,switch里面的值如果是1,2,3中的某一个,都会执行打印'a'的语句,因为他们的结束条件就是遇到break;
循环控制
while循环
//1. while while(条件){ 循环体 } //2. do...while do{ 循环体 }while(条件);
区别:while需要满足循环条件才会执行,do...while无论是否满足条件,他都会先执行一次,然后再判断循环条件。
ps:在写循环体时,尽可能要有退出循环的条件,或者return,break关键字,否则就是一个死循环。
for循环
//1. 普通for循环 for(初始值;循环条件;改变条件){ 循环体 } 面试题:如何用for写一个最高效的死循环? 很简单,直接:for(;;){} //2. for...in 以一个arr数组为例 var arr = [3,3,4,5,7,89,0,-10]; for(var index in arr){ console.log(arr[index],typeof index) } 这里的index是数组的下标,从0开始,但是这个index的值类型不是number,而是string。 这就很奇怪,但是使用的时候,比如arr[index]却不会报错。所以就也不用自己手动去转了。 //3. for...of 还是上面数组为例 for(var value of arr){ console.log(value) } 这里的value就是arr的值了,从第一个值开始到最后遍历
注意:
1.这三个for循环效率都一样,使用看个人爱好。
2.按道理来说,使用for...in时候,我们应该用const(定义常量)来定义下标,因为下标是不能够改的。for...of也应如此。
break 和 continue关键字
//break //外层循环 for(const i in arr1){ //内层循环 for(const j ipann arr2){ if(arr[i] === arr[j]){ break; } } } 上面的if条件成立,则执行break语句,跳出循环。但是break不会结束整个循环,而是结束内层的循环,没法结束外层的循环。 //continue //外层循环 for(const i in arr1){ //内层循环 for(const j in arr2){ if(arr[i] === arr[j]){ continue; } } } 上面的if条件成立,执行continue语句,那么continue后面的语句都不会执行,结束了 当前的这一次(注意是这一次)循环,还是会继续下一次的循环。此时它应该还是内层循环着。
面试会问break和continue的比较?
- break和continue都可以作用于循环语句,但是break还可以在switch里
- break结束离他最近的一个循环
- continue结束的是离他最近的本次循环