javascript快速入门3—分支判断与循环

分支结构

  • 单一选择结构(if)
  • 二路选择结构(if/else)
  • 内联三元运算符 ?:
  • 多路选择结构(switch)
    1. var condition =true;if(condition){
    2. alert("我将出现!");
    3. }
    4. condition =false;if(condition){
    5. alert("我不会出现!");
    6. }else{
    7. alert("我会出现!");
    8. }
    9. condition ="some string";if(condition){
    10. alert("可以直接对任何数据类型进行if判断,在判断时计算会自动将其转换成布尔值!");
    11. }var val = condition?"当为true时我将被返回":"当为false时我将被返回";
    12. alert(val);//将输出"当为true时我将被返回"

对于if..else语句,如果要执行的语句只有一条,可以不使用“{}”,但这种写法并不推荐.但确实这样可以简化代码:

  1. var str ="one";if(str=="one") alert("str的值为字符串'one' !");else alert("not one");

虽然JavaScript中没有if …. elseif 结构,但可以使用if…else的简写方式得到

  1. //为了判断用户输入的成绩的范围,我们使用了多重嵌套的if .. else语句
  2. var num = window.prompt("请输入XXX的成绩!","");
  3. num *=1;//window.prompt方法始终只返回字符串,用这样的方法将其转换成数字
  4. if(isNaN(num)&& num){//不能将其它值转换成数字时将返回NaN,可以用内置的isNaN判断值是否是NaN
  5. alert("您输入的不是一个数字!");
  6. }else{if(num<=100&& num>=90){
  7. alert("Excellent!");
  8. }else{if(num =80){
  9. alert("Good!");
  10. }else{if(num <80&& num >=70){
  11. alert("So so!");
  12. }else{if(num <70&& num >=60){
  13. alert("Be careful !!!");
  14. }else{if(num <60&& num >=0){
  15. alert("Oh, NO!");
  16. }else{
  17. alert("USB!");
  18. }
  19. }
  20. }
  21. }
  22. }
  23. }//上面的代码由于用了多重的if..else嵌套,显得非常的混乱,简化只须将else后的花括号去掉就行了
  24. // if (...) {...}这算是一句
  25. if(isNaN(num)){
  26. alert("您输入的不是一个数字!");
  27. }elseif(num<=100&& num>=90){
  28. alert("Excellent!");
  29. }elseif(num =80){
  30. alert("Good!");
  31. }elseif(num <80&& num >=70){
  32. alert("So so!");
  33. }elseif(num <70&& num >=60){
  34. alert("Be careful !!!");
  35. }elseif(num <60&& num >=0){
  36. alert("Oh, NO!");
  37. }else{
  38. alert("USB!");
  39. }//看上去清晰多了,但要注意的是,JavaScript中没有elseif 这样的语法,所以上的else if之间是有空格的

用于进行多次判断的switch语句

  1. switch(condition){//switch本来就是跳转的意思(又称为“开关”),所以switch语句就是判断情况,跳到符合的情况开始执行
  2. case4:
  3. alert("c的值是4");case3:
  4. alert("c的值肯定大于等于3");case2:
  5. alert("c的值肯定大于等于2");case1:
  6. alert("c的值肯定大于等于1");
  7. }//可以使用 break来只执行符合一个条件的语句
  8. switch(condition){case4:
  9. alert("c的值是4");break;case3:
  10. alert("c的值是3");break;case2:
  11. alert("c的值是2");break;case1:
  12. alert("c的值是1");break;
  13. }var condition="one";switch(condition){//switch不但可以用来判断数字,还可以判断字符串,甚至是不定的变量
  14. case"one":
  15. alert("condition的值是字符串'one' !");break;case"three":
  16. alert("condition的值是字符串'three' !");break;case"four":
  17. alert("condition的值是字符串'four' !");break;case"five":
  18. alert("condition的值是字符串'five' !");break;default://当所有情况都不匹配时,将执行default语句后的
  19. alert("我们要万无一失!condition什么都不是!");
  20. }

循环

循环用来指明当某些条件保持为真时要重复的动作。当条件得到满足时,就跳出循环语句。在 JavScript 中有四种循环结构可用。

  • 由计数器控制的循环(for)
  • 在循环的开头测试表达式(while)
  • 在循环的末尾测试表达式(do/while)
  • 对对象的每个属性都进行操作(for/in)
    for 语句指定了一个计数器变量,一个测试条件,以及更新该计数器的操作。在每次循环的重复之前,都将测试该条件。如果测试成功,将运行循环中的代码。如果测试不成功,不运行循环中的代码,程序继续运行紧跟在循环后的第一行代码。在执行该循环后,计算机变量将在下一次循环之前被更新。
  1. for(var i=0;i<10;i++){//for循环的圆括号里面须放三个句子,分别是1.初使化计数器 2.判断条件 3.更新计数器
  2. alert("i当前的值为"+i);
  3. }

其实for循环语句完全可以这样写,下面的代码和上面的效果是一样的(虽然没有必要,但从这样的代码可清楚看出for循环如何工作的)

  1. var i=0;//循环进行之前初始化i
  2. for(;;){//for语句括号中必须有三个语句,但可以为空语句
  3. if(i<10){//当条件为true时才执行代码
  4. alert("i当前的值为"+i);
  5. }else{//当条件为false时就退出循环
  6. break;//使用break退出循环
  7. }
  8. }

一个死循环最能说明while的工作方式了(但这样的错误我们绝不能在实际编程中出现)

  1. while(true){
  2. alert("你关不掉我的!");//这就是网上那些所谓的高手写的“关不上的窗(周传雄新歌,力荐)”代码
  3. }

do..while循环与while循环不同之处在于它至少将代码块中的代码执行一次

  1. do{
  2. alert("我肯定会出现一次的");
  3. }while(false);

而对于for … in循环,我们将在讲解数组和对象时使用

原文: https://wizardforcel.gitbooks.io/liyanhui-tutorials/content/94.html