码迷,mamicode.com
首页 > 其他好文 > 详细

表达式和语句

时间:2017-11-14 19:33:13      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:循环   变量   结构   运算   swap   影响   逻辑   bre   reference   

貌似很简单的概念,其实还是很值得深挖的。

1.基本概念

表达式是一种有值的语法结构,它能产生一个值,我们能拿这个值参与各种运算,比如var a;console.log(a=10);//输出10 这里a=10是一个赋值表达式,将10赋值给变量a,这么一来a的值为10,同时该赋值表达式返回a的值10作为函数console.log()的参数
语句是一种控制程序运行的语法结构,在宏观上调控程序。

2.表达式类型

2.1 变量常量表达式

    a
   3.4

2.2 算术表达式   

   a+b
   i++
   ++i

2.3 赋值表达式

   a = 3;
   b = a+4

2.4 逻辑表达式

   a && b
   1 || 3

2.5 关系表达式

   a < 4
   b == 5

2.6 逗号表达式

  a=3,b

3.语句类型 

   3.1 表达式语句

    表达式加上分号就变成了表达式语句,比如a = 3; some();3;

   3.2 语句块

    用一个花括号将各种代码包含起来,这种结构称为语句块。在ES6中出现了块作用域,用法是声明变量时,不是用var关键字,而是用let关键字  
案例一:
{
    var a = 10;
    let b = 20;
}
console.log(a);//10
console.log(b);//ReferenceError
用let声明的变量b作用域仅限在{}范围内,在{}外访问不到变量b
案例二:break可以用于任何标记语句
foo: {
            console.log(‘face‘);//face
            break foo;
            console.log(‘this will not be executed‘);//不会输出
      }
console.log(
‘swap‘);//swap
案例三:continue只能用于循环标记语句
var i, j;
        loop1:
            for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1"
                loop2:
                    for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2"
                        if (i == 1 && j == 1) {
                            continue ;
                        }
                        /***
                        i = 0, j = 0
                        i = 0, j = 1
                        i = 0, j = 2
                        i = 1, j = 0
                        i = 1, j = 2
                        i = 2, j = 0
                        i = 2, j = 1
                        i = 2, j = 2
                        ***/
                        console.log("i = " + i + ", j = " + j);
                    }
            }
        var i, j;
        loop1:
            for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1"
                loop2:
                    for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2"
                        if (i == 1 && j == 1) {
                            continue loop1;
                        }
                        /***
                        i = 0, j = 0
                        i = 0, j = 1
                        i = 0, j = 2
                        i = 1, j = 0
                        i = 2, j = 0
                        i = 2, j = 1
                        i = 2, j = 2
                        ***/
                        console.log("i = " + i + ", j = " + j);
                    }
            }
两段程序的区别就是continue处。第一段程序,continue后面没有标记,表示返回到当前循环,也就是转到loop2处继续执行,而此时i的值是1,继续执行的话,i的值仍然为1,j的值变为2。也就是continue的运行不会影响到i的值,它的作用仅仅是忽略j=1.第二段程序continue loop1表示程序的执行方向跳到loop1的位置,而位于loop1处的代码是外层循环,这么一来continue loop1表示,停止当前内层循环的运行,跳到外层循环处,这么一来,原本i=1,j=1,直接跳到外层循环,忽略了j=2的处理。在外层循环处,经过i++运算,i变为了2,然后继续内层循环的执行。
案例四:错误案例
pmx:{
        var a = 10;
            console.log(a);
        }
        {
            console.log("hello");
            break pmx;
            console.log("hi");
        }
浏览器报语法错误:SyntaxError:Undefined label ‘pmx‘
因为break能识别的标识语句是自身所在的语句块或者父语句块,显然标识符"pmx"所标识的语句和break所在的语句一点关系都没有,自然break不知道要跳转到哪里了。

   3.3 空语句

      只有一个分号的语句,它表示什么也不做。var i=0;for(;i<10;i++){...}

    3.4 控制语句

        3.4.1 循环控制语句 

     while(true){
            console.log("while 语句");
            break;
        }
        do{
            console.log(‘do while语句‘)
            break;
        }while(true);
        for(;;){
            console.log("for 语句");
            break;
        }

    3.4.2 条件语句

var a = 10;
        if(a < 30){
            console.log("if 语句")
        }
        if(a < 20){
            console.log("if else语句");
        }else{

        }
        if(a < 5){

        }else if(a < 6){
        
        }else if(a < 11){
            console.log("if else if else if 。。。语句");
        }
        switch(a){
            case 1:
                break;
            case 2:
                break;
            case 10:
                console.log("switch 语句");
                break;
            default:
        }

     3.4.3 特殊控制语句

              return;
              return 10;
              break;
             continue;
    
    

 

表达式和语句

标签:循环   变量   结构   运算   swap   影响   逻辑   bre   reference   

原文地址:http://www.cnblogs.com/bibiafa/p/7833929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!