了解JavaScript中的语句

前言

        前面我们学习了JavaScript中的变量、操作符等,本篇内容讲解JavaScript中的语句,只有了解了语句的使用,才能正式开发出一个完整的功能。

一、if语句 

        if语句是实际开发中使用最多的语句之一,具体语法如下

if(条件) 语句1 else 语句2 

        其中条件可以是任意表达式,并且其返回的值不一定是布尔值,JavaScript会使用Boolean()函数将最终结果转化为布尔值。 如果条件为true则执行语句1,如果条件为false则执行语句2。这里的语句1和语句2可以是单行语句,也可以是多行语句。如果是多行语句,则需要使用大括号将所有语句括起来,如下所示

if(1==1){
    console.log(1);
    console.log(2);
}else{
    console.log(3);
    console.log(4);
}

        不过,即使是单条语句,也推荐使用代码块的方式,即使用大括号将其括起来。

二、do-while语句 

        do-while语句是后测试循环语句,即先执行循环体中的代码,后测试出口条件。也就是说,在do-while语句中,循环体中的代码至少被执行一次。以下是do-while语句的语法

do{
    语句
}while(条件)

         下面举例说明

var i=10;
do{
    console.log(i);
    i--;
}while(i>1)    //i大于1的情况下,循环体始终被执行

三、while语句

        与do-while语句相反,while语句属于前测试循环语句,即先先测试出口条件,再执行循环体中的代码。 以下是while语句的语法

while(条件){
    语句
}

         下面举例说明

var i=10;
while(i>1){
    console.log(i);
    i--;
}    //i大于1的情况下,循环体始终被执行

四、for语句 

        for语句也是前测试语句,它的特点是在执行循环之前可以声明变量,并且可以定义执行循环后要执行的代码。以下是for语句的语法

for(声明变量;条件;循环后执行的语句){
    语句
}

        下面举例说明

for(var i=10;i>1;i--){    //变量i在for语句中声明
    console.log(i);
}    

        需要说明的是,虽然i是在循环内定义的变量,但在循环外也可以访问到它。

        for语句中的三个部分都是可选的,如果三个部分都省略,则会得到一个无限循环语句,如下所示

for(;;){    
    console.log(i);
}    

        也可以只给出控制表达式,将其变为while语句,例如

var i=10;
for(;i>1;){    
    console.log(i);
    i--;
}    

五、for-in语句

         for-in语句可以用来迭代对象属性,其语法如下

for(属性 in 对象){
    语句
}

        下面举例说明

var a={p1:1,p2:2};
for(key in a){
  console.log(key)    //第一次输出p1,第二次输出p2
}

        需要注意的是,JavaScript中的对象属性没有顺序,因此,通过for-in语句循环出来的属性顺序是不可预测的,会因浏览器而异。并且,如果对象的值为null或undefined,for-in语句则不会执行。

六、label语句 

        label语句用来在代码中添加标签。以便将来使用。label语句一般要与循环语句配合使用,具体用法在下面的小节讲解。

七、break和continue语句 

         break和continue语句用来在循环中控制循环的执行。break语句会立刻退出整体循环,并继续执行循环后面的语句。而continue语句则只是退出本次循环,并从循环顶部继续执行。比如下面的例子

for(i=0;i<10;i++){
  console.log(i)
  if(i>5){
    break;
  }
}
console.log('循环结束')

        以上代码在连续输出0到6后,便退出循环,直接输出“循环结束”

for(i=0;i<10;i++){
  if(i==5){
    continue;
  }
  console.log(i)
}
console.log('循环结束')

        以上代码从0到9依次输出,但唯独没有输出5,因为在循环体中当i等于5的时候退出了本次循环,又从头开始执行了。

        我们再看一下break语句与label语句联合使用的情况,下面举例说明

var num=0;
start:
      for(i=0;i<10;i++){
        for(j=0;j<10;j++){
          if(i==5&&j==5){
            break start;
          }
          num++;
        }
      }
console.log(num);  //55

        在以上代码中,如果两个循环正常执行的话,num的最终值是100。但内部循环的break后面跟了一个参数,表示要返回到的标签。添加这个标签的结果导致break语句不仅退出了内循环,还退出了外循环。因此,当变量i和j都等于5时,num的值刚好是55。

        我们再看一下continue语句与label语句联合使用的情况,下面举例说明 

var num=0;
start:
      for(i=0;i<10;i++){
        for(j=0;j<10;j++){
          if(i==5&&j==5){
            continue start;
          }
          num++;
        }
      }
console.log(num);  //95

         以上代码中,continue会强制继续从最外层开始继续执行循环,这也意味着内部循环少执行了5次,因此num最终结果是95。

        需要注意的是,在实际开发中并不推荐使用label标签,过度使用label标签会导致代码混乱,不利于调试。

八、with语句

        with语句的作用是将代码的作用域设置到一个特定对象中。目的是简化多次引用同一对象的代码,比如:

var a={
  p1:1,
  p2:2,
  p3:3
};
with(a){
  console.log(p1);
  console.log(p2);
  console.log(p3);
}

        以上代码会依次输出1、2、3。

        注意,由于大量使用with语句会造成性能下降,所以在实际开发中不建议使用with语句。

九、switch语句 

        switch语句是一种流控制语句,如下所示:

var a=1;
switch (a) {
  case 1:
    console.log(1);
    break;
  case 2:
    console.log(2);
    break;
  case 3:
    console.log(3);
    break;
  default:
    console.log(4)
}

        以上代码输出1,以上代码等同于以下if语句

var a=1;
if(a==1){
  console.log(1);
}else if(a==2){
  console.log(2);
}else if(a==3){
  console.log(3);
}else{
  console.log(4);
}

        switch语句还可以像下面这么用

var a=1;

switch (a) {
  case 1:
  case 2:
  case 3:
    console.log(3);
    break;
  default:
    console.log(4)
}

        以上语句等同于下面的if语句

var a=1;
if(a==1||a==2||a==3){
  console.log(3);
}else{
  console.log(4);
}

你可能感兴趣的:(javascript,开发语言,ecmascript)