ECMASCript定义了一组语句,也称流程控制语句
条件语句express
=============浏览器
if (condition) statement1 else statement2
其中的condition条件能够是任意表达式,并且对这个表达式的求值结果不必定是布尔值。ECMAScript会自动调用Boolean()转换函数将这个表达式的结果转换为一个布尔值。若是对condition求值的结果为true,则执行statement1,若是对condition求值结果为false,则执行statement2。这两个语句既能够是一行代码,也能够是一个代码块(推荐)。函数
if (condition1) statement1 else if(condition2) statement2 else statement3
switch(expression) { case value: statement break; case value: statement break; case value: statement break; default: statement }
switch语句中每个case的含义是:"若是表达式
等于这个值value
,则执行后面的语句statement"。而break会致使代码执行跳出switch语句。若是省略break关键字,就会致使执行完当前case后,继续执行下一个case。最后的default关键字则用于在表达式不匹配前面任何一种情形时,执行机动代码(所以,也至关于一个else语句)。测试
例子1code
var num = 25; switch (true) { case num < 0: alert("Less than 0"); break; case num >= 0 && num <= 10: alert("Between 0 and 10"); break; case num > 10 && num <= 20: alert("Between 10 and 20"); break; default: alert("More than 20"); }
注意
:switch语句在比较值时使用的是全等操做符,所以不会发生类型转换。对象
在对表达式求值以前,循环体内的代码至少被执行一次。ip
do { statement } while (expression);
例子2it
var i = 0; do { i += 2; } while (i < 10); alert(i);//10
while(expression) statement
例子3io
var i = 0; while(i < 10) { i += 2; } alert(i);//10
它具备在执行循环以前初始化变量和定义循环后要执行代码的能力。
例子4console
for(var i = 0;i < 10;i++) { alert(i); }
for-in 语句是一种精准的迭代语句,能够用来枚举对象的属性
for (var prop in window) { console.log(prop); }
ECMAScript对象的属性没有顺序。所以经过for-in循环输出的属性名是不可预测的,具体来说,全部属性都会被返回一次,单反毁的前后次序可能会因浏览器而异。建议在使用以前,先检测确认该对象的值不是null或unedfined。
当即退出循环
例子5
var num = 0; for(var i = 1;i < 10;i++) { if(i % 5 == 0) { break; } num++; } alert(num);//4
退出当前正在执行的循环代码,而后开始继续循环。
var num = 0; for(var i = 1;i < 10;i++) { if(i % 5 == 0) { continue; } num++; } alert(num);//8
//执行过程理解 var num = 0; for(var i = 1;i < 10;i++) { console.log('i '+i); if(i % 5 == 0) { continue; } num++; console.log('num '+num); };
可指定返回值,也可不指定(此时返回undefined)。1.return语句后中止并当即退出函数,return后面的语句也永远不会执行2.return语句只能在函数体内出现,若是不是的话会自动报语法错误