流程控制语句javascript
switch 和 if 均可以相互转换,switch 的性能更优于 if java
1. 条件判断语句 if性能
在某条语句以前,使用条件判断语句。spa
若是条件成立才会执行 if 代码块 里的语句,不成立,则跳过 if 代码块 里的语句,而执行下面的语句。code
if 语句,只会有一个代码块被执行。。。有一个代码块被执行了,if 语句就结束了。blog
if(条件表达式1 && 条件表达式2)
{ 语句1; 语句2; }
if(条件表达式1 && 条件表达式2) { 语句1; 语句2; } else { 语句3; 语句4; }
if (条件表达式1 && 条件表达式2) { 语句1; 语句2; } else if (条件表达式3 && 条件表达式4) { 语句3; 语句4; } else { 语句5; 语句6; }
2. 条件分支语句ip
switch(条件表达式)
{
case 表达式1:
语句1;
语句2;
break;
case 表达式2:
语句3;
break;
case 表达式3:
语句4;
语句5;
语句6;
break;
default:
语句7;
break;
}
执行时,根据 条件表达式 的值与 case 的值依次进行全等比较,全等的则执行以后的除了 case 的全部语句。rem
若是遇到 break; 则立刻跳出 switch 语句块。it
若是全部的 case 都是 false,则执行 default 后面的语句。console
switch
语句后面的表达式,与case
语句后面的表示式比较运行结果时,采用的是严格相等运算符(===
),而不是相等运算符(==
),这意味着比较时不会发生类型转换。
var x = 1; switch (x) { case true: console.log('x 发生类型转换'); break; default: console.log('x 没有发生类型转换'); } // x 没有发生类型转换
3. 循环语句
while(条件表达式) { 语句1; 语句2; }
只要条件表达式成立,就会一直执行代码块。
do { 语句1; 语句2; } while(条件表达式);
for(初始化表达式; 条件表达式; 递增表达式) { 语句1; 语句2; }
break; 和 continue;
代码块
标签 label
foo: { console.log(1); break foo; console.log('本行不会输出'); } console.log(2);
top: for (var i = 0; i < 3; i++){ for (var j = 0; j < 3; j++){ if (i === 1 && j === 1) break top; console.log('i=' + i + ', j=' + j); } } // i=0, j=0 // i=0, j=1 // i=0, j=2 // i=1, j=0
continue
语句后面不使用标签,则只能进入下一轮的内层循环。
top: for (var i = 0; i < 3; i++){ for (var j = 0; j < 3; j++){ if (i === 1 && j === 1) continue top; console.log('i=' + i + ', j=' + j); } } // i=0, j=0 // i=0, j=1 // i=0, j=2 // i=1, j=0 // i=2, j=0 // i=2, j=1 // i=2, j=2