首页 > 代码库 > 从头开始学JavaScript (六)——语句

从头开始学JavaScript (六)——语句

原文:从头开始学JavaScript (六)——语句

一、条件分支语句:if

基本格式:

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

执行流程:
技术分享

二、循环语句

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

2.1.1while语句

基本格式:

do {
    <语句组>
} 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?}

 

从头开始学JavaScript (六)——语句