1 if语句
语法:
if(condition) statement1 else statement2;
condition条件可以使任意表达式;如果表达式的求值的结果不是结果,是一个布尔
值,那么ECMAScript会自动调用Boolean()转换函数将这个表达式的值转换为布
尔值,如果condition的求值结果为true那么执行(statement1)语句1,如果
condition的求值结果为false,那么执行(statement2)语句2。
2 do-while
do-while语句是一种测试循环的语句,即只有在循环体中的代码执行之后,才会测试出口条件,循环体内的语句至少被执行一次。
语法
do{
statement
}while(expression);
3 while语句
while语句属于前测试循环语句,也就是说,再循环体内的代码被执行以前,就会对出口条件求值。因此,循环体内的语句有可能一次都不执行。
语法:
while(expression) statement;
4 for 循环
for语句是一种前测试循环语句,但它具有执行循环之前初始化变量和定义循环后要执行的代码的能力。
语法:
for(initialization;experssion;post-loop-expression)
statement
如下面的例子:
var count=0;
for(var i=0;i<count;i++){
alter(i);
}
for语句中初始化表达式,控制表达式和循环后表达式都是可选的,将这些全部省略就会创建一个死循环,如果只是给出了控制表达式,实际上就相当于将for循环转换为了while循环。
5 for-in语句
for-in语句是一种精准的迭代语句,可以用来枚举对象的属性。
语法:
for(property in expression )
statement
如下例:
for(var property in window){
document.write(propName);
}
ECMAScript 对象的属性没有顺序,因此循环输出的属性名的顺序是不可测评的,因浏览器而异。
如果表示迭代的对象的值为null或者undefined,for-in语句会抛出异常,ECMAScript5更正了这个行为;对这一种情况不在抛出错误,而只是不执行循环体。为了保证最大限度的兼容性,建议在使用for-in循环之前,先检测确认该对象不是null或者undefined。
6 label语句
使用label语句可以在代码中添加标签,以便将来使用。
语法:
start:for(var i=0;i<count;i++){
alert(i);
}
这个例子中定义的start标签可以在以后由break语句和continue语句引用,加标签的语句一般与for语句等循环语句配合使用。
7 break语句和continue语句
break:立即退出循环,强制执行循环后面的语句。
continue:立即退出本次循环,退出循环后在循环的顶部继续执行。
8 with语句
with语句的作用是将代码的作用域设定到一个特定的对象中。
with语句的语法如下:
with(expression) statement ;
定义with语句的目的是主要为了简化多次编写同一个对象的工作。
如下例:
var qs=location.search.substring(1);
var hostname=location.hostname;
var url=location href;
上面几行代码中都包含了location对象,如果使用with语句,可以把上面的代码写成如下所示:
with(location){
var qs=search.substring(1);
var hostname=hostname;
var url=herf;
}
在严格模式下是不允许使用with语句的,不然就会视为错误。
9 switch语句
switch语句与if语句的关系最为密切,是一种流控制语句。
语法:
switch(expression){
case value:statement
break;
case value:statement
break;
case value:statement
break;
default:statement
}
case:如果表达式的值等于这个值(value),那么执行后面的语句(statement)。
break:是指将执行流跳出switch语句,如果省略,则执行下一个case。
default:用于在表达式不匹配 前面任何一种情形时,执行default后的代码。
switch语句中可以使用任何类型的数据,case的值可以是变量,也可以表达式。
例如:
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在比较时使用的是全等操作符。不会发生类型转换。