if语句
if (i = 5){
alert("i等于5");
}else{
alert("i不等于5");
}
if(i > 5){
alert("i大于5");
}else if(i < 5){
alert("i小于5");
}else{
alert("i等于5");
}
do-while语句
do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件,换句话说,在对条件表达式求值之前,循环体内的代码至少会执行一次。
var i = 0;
do{
i += 2;
}while(i < 10);
alert(i);//10
while语句
while语句属于前测试循环语句,在循环体内代码被执行之前,就会对出口条件求值,左移循环体内代码可能永远不会被执行
var i = 0;
while (i < 10){
i += 2;
}
for语句
for语句也是一种前测试循环语句,但是它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力
var count = 10;
for(var i = 0; i < count; i++){
alert(i);
}
for循环语句可以和while语句功能相同:
var count = 10;
var i = 0;
while(i < count){
alert(i);
i++;
}
有必要指出,在for循环的变量初始化表达式中,也可以不使用var关键字,该变量的初始化可以在外部执行。
var count = 10;
var i;
for(i = 0; i < count; i++){
alert(i);
}
for-in语句
for-in语句是一种精准的迭代语句,可以用来枚举对象属性
for (var name in window){
console.log(name);
}
在这个例子中,我们使用for-in循环来显示了BOM中的window对象下的所有属性,每次循环时,都会讲window对象中存在的一个属性名赋值给变量name,这个过程一直持续到对象中的所有属性都被枚举一遍为止,如果对象中的变量值为null或者undefined则循环体不会执行。
label语句
使用label语句可以在代码中添加标签,以便将来使用
start: for(var i=0; i < count; i++){
alert(i);
}
这个例子中定义的start标签可以在将来由break或continue语句引用,加标签的语句一般都要与for语句等循环语句配合使用
break和continue语句
break语句会立即退出循环,强制继续执行循环后面的语句
continue语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行
var num = 0;
for(var i=1; i<10; i++){
if(i % 5 ==0){
break;
}
num++;
}
alert(num);//4
在变量i等于5时,循环总共执行了4次,而break语句的执行,导致了循环在num再次递增之前就退出了,直接执行alert语句
var num = 0;
for(var i=1; i<10; i++){
if(i % 5 ==0){
continue;
}
num++;
}
alert(num);//8
当变量i等于5时,循环会在num再次递增之前退出,但接下来执行的是下一次循环,即i的值等于6的循环,于是,循环又继续执行,直到i等于10的时候自然结束,num最终值为8,因为continue语句导致它少递增了一次
with语句
with语句的作用是将代码的作用域设置到一个特定的对象中
定义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 = href;
}
在with语句代码块内部,每一个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性,如果发现同名的属性,则以location对象属性的值作为变量的值
switch语句
switch(i){
case 25:
alert("25");
break;
case 35:
alert("35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
break关键字导致代码执行跳出switch语句,如果省略break关键字,就会导致执行完当前case后,继续执行下一个case,最后的default关键字则用于在表达式不匹配前面任何一种情形的时候,执行的代码。
ECMAScript中的switch语句有自己的特点:在switch语句中使用任何数据类型(字符串,对象)都可以,每个case的值不一定是常量,可以是变量,甚至是表达式。
switch ("hello world") { //switch语句是一个字符串
calse "hello" + "world": //case值为一个表达式
alert("1");
break;
case "goodbye":
alert("2");
break;
default:
alert("3");
}
var num = 25;
switch(true){
case num < 0: //case值可以是范围
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语句在比较值时,使用的是全等操作符,不会发生类型转换!