zoukankan      html  css  js  c++  java
  • 从头开始学JavaScript (六)——语句

    一、条件分支语句:if

    基本格式:

    if (<表达式1>){
        <语句组1>
    }else if (<表达式2>){
        <语句组2>
    }else{
        <语句组3>

    执行流程:

    二、循环语句

    2.1前测试循环语句:在循环体内的代码被执行之前就对出口条件求值。

    2.1.1while语句

    基本格式:

    while(表达式){<语句组>}

    执行流程:

    2.1.2 for语句

    基本格式:
    for (<初始表达式>;<条件表达式>;<变动量表达式>){
        <语句组>
    }

    执行流程:
     

    2.2后测试循环语句:在循环体中的代码被执行之后才会测试出口条件。

    2.2.1、do-while语句

    基本格式:

    do {
        <语句组>
    } while (<表达式>) ;

    执行流程:

    三、精准的迭代语句:for-in

    基本格式:
    for ( 属性 in 对象 ){
        <语句组>
    }

    作用:重复执行指定对象的所有属性,可以用来枚举对象的属性。

     例子:

    <html>
    <body>
    <p>点击下面的按钮,循环遍历对象 "person" 的属性。</p>
    <button onclick="myFunction()">点击这里</button>
    <p id="demo"></p>
    
    <script>
    function myFunction()
    {
    var x;
    var txt="";
    var person={fname:"Bill",lname:"Gates",age:56}; 
    
    for (x in person)
    {
    txt=txt + person[x];
    }
    
    document.getElementById("demo").innerHTML=txt;
    }
    </script>
    </body>
    </html>

    如果要表示的对象为null或者undefined,循环体将不再执行,或者抛出错误,因此,在执行for-in循环时,应该先检测改对象的属性值是不是null或者undefined。

    四、Lable语句

    基本语法:

    Label: <语句组>

    如: begin: for (var i = 0; i < 10 ; i++ ){
                             alert(i);
                       }
    举例说明lable语句的作用:
    未加lable:
    var num = 0;
            for (var i = 0 ; i < 10 ; i++){
                 for (var j = 0 ; j < 10 ; j++){
                      if( i == 5 && j == 5 ){
                            break;
                      }
                 num++;
                 }
            }
            alert(num);//95

    加入lable:

    var num = 0;
        outPoint:
        for (var i = 0 ; i < 10 ; i++){
             for (var j = 0 ; j < 10 ; j++){
                  if( i == 5 && j == 5 ){
                        break outPoint;
                  }
             num++;
             }
        }
        alert(num); //55

    第一个例子输出95不难理解,第二个例子为什么输出55呢,是因为执行到break outpoint时,直接跳出到putpoint层,执行alert语句。

    如果把第二个例子改成下面这样:

     1                var num = 0;
     2                 for (var i = 0 ; i < 10 ; i++){
     3                     outPoint: 
     4                     for (var j = 0 ; j < 10 ; j++){
     5                         if( i == 5 && j == 5 ){
     6                             break  outPoint;
     7                         }
     8                         num++;
     9                     }
    10                 };
    11 
    12         alert(num);//95

    这个结果和第一个例子的结果是一致的。

    五、break和continue语句

    5.1break语句:

    1        var num = 0;
    2         for (var i = 1 ; i < 10 ; i++){
    3             if(i%5==0){
    4                 break;
    5             }
    6             num++;
    7         };
    8         alert(num);//4

    break语句执行后跳到alert语句

    5.2continue语句:

    1  var num = 0;
    2  for (var i = 1 ; i < 10 ; i++){
    3     if(i%5==0){
    4        continue;
    5     }
    6       num++;
    7   };
    8   alert(num);//8

    continue语句执行后跳到for()循环,继续执行循环,直到循环条件不成立。

    六、with语句

    基本语法:

    with (object) {
        statements
    }
    举例说明:
    不使用with的写法:
    var qs = location.search.substring(1);
    var hostName = location.hostname;      
    var url = location.href;
     alert(qs);
     alert(hostName);
     alert(url);

    使用with的写法:

    1  with(location){
    2             var qs = search.substring(1);
    3             var hostName = hostname;      
    4             var url = href;
    5         }
    6 
    7         alert(qs);
    8         alert(hostName);
    9         alert(url);

    从上面例子可以看出:with语句的作用是将代码的作用域设置到一个特定的对象中、减少的重复输入。

    但是js的解释器需要检查with块中的变量是否属于with包含的对象,这将使with语句执行速度大大下降,并且导致js语句很难被优化。

    因此并不建议大规模使用with语句。

    七、swith语句

    基本语法:
    switch (<表达式>) {
        case <数值1>:<语句组1>
                     break;
        case <数值2>:<语句组2>
                     break;
        ...
        default <语句组> 

    执行流程:

    switch语句可以是任何数据类型,每个case的值也不一定是常量,也可以是变量、表达式等,例如:

     1  switch ("hello world") {
     2             case "hello" + " world": 
     3                 alert("Greeting was found.");
     4                 break;
     5             case "goodbye": 
     6                 alert("Closing was found.");
     7                 break;
     8             default: 
     9                 alert("Unexpected message was found.");
    10         }
     1         var num = 25;
     2         switch (true) {
     3             case num < 0: 
     4                 alert("Less than 0.");
     5                 break;
     6             case num >= 0 && num <= 10: 
     7                 alert("Between 0 and 10.");
     8                 break;
     9             case num > 10 && num <= 20: 
    10                 alert("Between 10 and 20.");
    11                 break;
    12             default: 
    13                 alert("More than 20.");
    14         }

    switch语句在比较时使用的是全等操作符比较,因此不会发生类型转换。

    练习:

    1 <script type="text/javascript">
    2         var count = 10;
    3         for (var i=0; i < count; i++){
    4             alert(i);
    5         }
    6         alert(i);   //输出什么?
    7 
    8     </script>
    for(;;){
        alert("2");//输出多少次2?
    }
  • 相关阅读:
    非递归实现二叉树先序、中序和后序遍历
    领益科技:Windows Server 2012 R2 强制卸载域控制器
    Zabbix调优不完全指南(https://www.jianshu.com/p/2d911d55448f)
    Linux下基础查看命令
    Linux下的快捷键
    给Linux系统新增加一块硬盘
    领益智造:Windows中的备份和还原
    领益智造:AD中修改OU下面用户的属性
    领益科技:AD中批量创建域用户(创建Mac地址账号)
    Linux常见企业面试题
  • 原文地址:https://www.cnblogs.com/yxField/p/4219935.html
Copyright © 2011-2022 走看看