1,流程控制语句
01) if语句 if(condition){ statement1 }else{ statement2 } condition表示任意表达式,该表达式求值的结果不一定是布尔类型,如果不是布尔类型,ECMAScript会调用Boolean() 转换函数将这个表达式结果转换为一个布尔类 型,如果condition求值结果为true,执行statement1。如果求值结果为false,执行statement2if(condition){
statement1 } statement2while(true){
var text=prompt("请输入一个数"); var num=Number(text); if(num){ if(num%3==0){ alert("该数是3的倍数。"); }else{ alert("该数不是3的倍数。"); } }else{ alert("重新输入。"); } if(text==""){ break; } } alert("欢迎下次使用!");02)switch语句 switch(expression){ case val:
break;
case val2:
break;
default: } 可以在switch语句中使用任何数据类型。 case的值不一定是常量,也可以是变量,甚至是表达式。执行原理
condition === 常量 break 每个case语句的结尾都应该有break default语句如果位于代码的最后,结尾不需要break,反之,则需要var day = prompt("请输入您要转换的数字");
day = +day;// day = Number(day); if(day && day>=1 && day<=7){ switch(day){ default: console.log("周日"); break; case 1: console.log("周一"); break; case 2: console.log("周二"); break; case 3: console.log("周三"); break; case 4: console.log("周四"); break; case 5: console.log("周五"); break; case 6: console.log("周六"); break; } }else{ console.log("不合法输入"); }2. 循环语句
01)for语句 for循环是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力。以下是for循环的语法: 初始化表达式,控制表达式,循环后表达式 for(initialization;expression;post-loop-expression){ //loop option } 例如: var sum = 0; for(var i=0;i<10;i++){ sum +=i; } console.log(i); //10//九九乘法表
for(var i=1;i<=9;i++){ for(var j=1;j<=i;j++){ //document.write("★"+"<br />"); document.write(j+"*"+i+"="+i*j+" "); } document.write("<br />") } //输出10行10列★ for(var i=1;i<=10;i++){ for(var j=1;j<=10;j++){ document.write("★"); } document.write("<br />") }/*
var i; i = 1; i<=100 //true total +=i // total 1 ++i; // i=2i<=100 //true
total +=i //total 3 ++i; //i=3i<=100 //true
total+=i //total 6 ++i //i=4...
i<=100; total+=i ++i //i=101i<=100
*/var total = 0;
var i; for(i=1; i<=100; ++i) { total += i; } console.log(total); console.log(i);/*js没有块级作用域*///for循环输出1-100之间所有的质数(只能被1和自身整除的数,不包括1)
for(var i=2;i<=100;i++){ //质数 for(var a=2;a<=i;a++){ //除数 if(i%a==0 && i!=a){ //排除所有在i=a之前能被a整除的数 break; } else if(i%a==0 && i==a){ //输出所有在i=a且i%a=0的数 console.log(i); } } }ECMAScript不存在块级作用域,在循环内部定义的变量也可以在外部访问到
死循环 for(;;){ //当for中的表达式省略的时候,会创建一个死循环 } while(true){ } 02) do-while语句 初始化条件 do{ 迭代条件 循环体 }while(结束条件); 后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。循环体内的代码最少被执行一次。/*
var total = 0; var i = 1; total +=i ; //total= 1 i++ //i =2 i<=100; //truetotal +=i; //total = 3
i++ //i = 3 i<=100 //true...
total +=i i++ //i=101 i<=100 //false结束循环 */ var total = 0; var i=1; do{ total+=i; i++; }while(i<=100);console.log(total);
console.log(i);03) while语句
初始化条件; while(结束条件){//循环体
迭代条件
} 前测试循环语句,即在循环体内的代码被执行之前,就会对出口条件求值。因此,循环体内的代码有可能永远不会被执行。 while(false){ // }/*
var total = 0; var i = 1;i<=100; //true
total +=i; //total = 1 i++; //i = 2i<=100 //true
total +=i //total = 3; i++; //3...
i++ //i=101i<=100 //false 终止循环
*/ var total = 0; var i = 1; while(i<=100){ total += i; i++; } console.log(total); console.log(i); 04) for-in 语句 是一种精准的迭代语句,可以用来枚举对象的属性 for(property in expression){ statement } 例如: 打印出window对象中所有的属性 for(var propName in window){ console.log(propName); } label 语句 使用label可以在代码中添加标签,以便将来使用 label : for(int i=0;i<10;i++){ if(i == 5){ break label; } } 循环关键字 break 跳出循环体for(var i=0;i<10;i++){
if(i==5){
break;
}
}//0,1,2,3,4 直接跳出循环
continue 结束本次循环,进行下一次循环for(var i=0;i<10;i++){
if(i==5){
continue;
}
}//0,1,2,3,4,6,7,8,9 跳出本次循环,继续下次循环
3. 特殊语句
with语句 主要作用是将代码的作用域设置在一个特定的对象中,定义with语句的主要目的是为了简化多次访问同一个对象的工作,但是大量使用with语句会导致性能下降,并且难以维护,所以不建议使用。 例如: var person = { name:'terry', age:12, gender:'男' } 要想访问person对象中的属性需要: console.log(person.name); console.log(person.age); console.log(person.gender); 但是还可以通过with语句来实现 with(person){ console.log(name); console.log(age); console.log(gender); }