美文网首页
运算符的优先级与结合性

运算符的优先级与结合性

作者: zooeydotmango | 来源:发表于2019-08-20 00:03 被阅读0次

    左结合与右结合

    有的运算符是左结合的,即运算从左到右执行,如

    w = x + y + z;
    w = (x + y) + z;    //与上行等同
    

    有的运算符是右结合的

    w = x = y = z;
    w = (x = (y = z));     //与上行等同
    w = a: b: c ? d : e? f : g;
    w = a? b : (c? d: (e? f : g));     //与上行等同
    

    常遇到的优先级

    • 算术运算符>关系运算符>逻辑运算符>赋值运算符

    • typeof的优先级相当的高,比加减乘除神马的都高,所以虽然是操作符,在在复杂表达式的时候我们还是习惯加括号,看个例子

     typeof 2*3;//NaN
     typeof (2*3);//"number"
     typeof 2+3;// "number3"
    
    • ++--是右结合的操作符(优先级最高的几个都是右结合),而且比加减乘除优先级高。同时自增、自减运算符的运算数得是左值(可以放在赋值符号左边的值),而不能是常数
     4++; //ReferenceError: Invalid left-hand side expression in postfix operation
     var a=0,b=0;
     a+++b;//0
     a;//1,++优先级比+高,所以相当于(a++)+b
     b;//0
    
    • 赋值运算符的优先级相当的低
     a = b == c; //等同于a = (b==c)
    
    • 逻辑非!也在优先级队列的前端,比加减乘除高,但逻辑与、逻辑或优先级很低,不如加减乘除
     !2*0; //0, 等价于(!2)*0
    
    • 断路与 和 短路或
     1 && 3;
     1 && "foo" || 0;
     1 || "foo" && 0
    

    参考

    运算符的优先级

    相关文章

      网友评论

          本文标题:运算符的优先级与结合性

          本文链接:https://www.haomeiwen.com/subject/cvvysctx.html