资讯专栏INFORMATION COLUMN

逻辑符的运算优先级

andycall / 3654人阅读

摘要:成员访问的优先级在,运算之后,在其他的运算之前。判断的优先级也在赋值号的最前边。逻辑与和逻辑或要在左右两边的运算完成以后,在进行逻辑与和逻辑或比较。

逻辑符的运算优先级表(根据优先级从大到小排列)
优先级    运算类型    关联性    运算符
19    圆括号    n/a    ( … )
18    成员访问    从左到右    … . …
    需计算的成员访问    从左到右    … [ … ]
    new (带参数列表)    n/a    new … ( … )
17    函数调用    从左到右    … ( … )
    new (无参数列表)    从右到左    new …
15    逻辑非    从右到左    ! …
    一元加法    从右到左    + …
    一元减法    从右到左    - …
    前置递增    从右到左    ++ …
    前置递减    从右到左    -- …
    typeof    从右到左    typeof …
    void    从右到左    void …
    delete    从右到左    delete …
14    乘法    从左到右    … * …
    除法    从左到右    … / …
    取模    从左到右    … % …
13    加法    从左到右    … + …
    减法    从左到右    … - …
12    按位左移    从左到右    … << …

11    小于    从左到右    … < …
    小于等于    从左到右    … <= …
    大于    从左到右    … > …
    大于等于    从左到右    … >= …
    in    从左到右    … in …
    instanceof    从左到右    … instanceof …
10    等号    从左到右    … == …
    非等号    从左到右    … != …
    全等号    从左到右    … === …
    非全等号    从左到右    … !== …
9    按位与    从左到右    … & …
8    按位异或    从左到右    … ^ …
7    按位或    从左到右    … | …
6    逻辑与    从左到右    … && …
5    逻辑或    从左到右    … || …
4    条件运算符    从右到左    … ? … : …
3    赋值    从右到左    … = …
… += …
… -= …
… *= …
… /= …
… %= …
… &= …
… ^= …
… |= …

总结:

   1、赋值操作排在所有的比较最后,(num == 1)里的内用最优先运算。
   2、成员访问的优先级在,()运算之后,在其他的运算之前。
   3、函数的执行,在其他比较和运算符之前之前。
   4、判断的优先级也在赋值 = 号的最前边。
   5、逻辑与 和 逻辑或 要在左右两边的运算完成以后,在进行 逻辑与  和 逻辑或 比较。
这里是运算优先级的例子
    var  obj = 1==1;
    // console.log(obj);
    var obj2 = 1>2;
    var obj3 = 3*2;
    var obj4 = !1 == 0; // 先运算 !1(1的取反),然后再和  == 0 ,进行比较,把比较的结果值赋给obj4

    // 特殊例子
    var i = 0;
    var obj5 =  ++i; // 前置型递增,就是将i的值i本身再进行相加,然后再赋值给obj5
    var obj6 =  i++;// 后置型递增,就是将i的值先赋值给obj5,然后i本身再进行相加
    console.log(obj6);

    // 函数运算的优先级
    var objOne = {
        name: "zhaoxuan",
        method:(function () {
            return function () {
                this.method = 1;
                return "fn是一个字符串"
            }
        })()
    };
    // 函数运算执行的优先级,在赋值之前,先进行自执行函数运算,然后再把自执行函数运算的返回值,赋值给obj.method属性。
    var fn = objOne.method();
    console.log(fn);
    // 这里也是,objOne.method();函数的运算优先,先将函数进行运算,然后再把返回值给fn,fn现在的值就是字符串‘fn是一个字符串’


    // 逻辑与 和 逻辑或
    // 逻辑与 比 逻辑或的优先级高。
    console.log(1 && 2 || 0);
    // 先进行 1&&2 运算,然后拿 1&&2的运算结果 2和0进行逻辑或运算 ,也就是(2 || 0)。
    console.log(1 && true || 0);// true
    console.log(1 && 0 || 3 && 1 && true);

    // 逻辑与,两个条件都成立,返回结果才是true
    var num1 = 2;
    var num2 = true;
    if (num1 && num2) {
        console.log("这才是成立的");
    }
    var num3 = false;
    if (num1 && num3) {
        console.log("这是不成立的,所以不打印");
    }

    //  true && false,第一个ture成立则返回第二个,如果,第一个不成立 false&&false,则直接返回第一个
    console.log(false && true);
    
    // 逻辑或  两个或者多个条件其中一个成立,则返回成立true
    if( 1==1 || 2==0) {
        console.log("这种或就成立的,因为1==1成立了");
    }
    // 如果两个都不成立,则就返回false
    if( 1==3 || 2== 3) {
        console.log("因为两个都不成立,所以这里面的不打印");
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83806.html

相关文章

  • js-数据运算

    摘要:跳过第二个运算子的机制,被称为短路有些程序员喜欢用它取代结构等价于运算符可以多个连用返回第一个布尔值为的表达式的值。 一、运算符概述 1、定义 JavaScript中运算符主要用于连接简单表达式,组成一个复杂的表达式 2、运算符类别 算数运算符 赋值表达式 比较表达式 布尔运算符 位运算符 二、算数运算符 1、加法运算符(Addition):x + y 加法运算符是在运行时决定,到...

    sf190404 评论0 收藏0
  • C语言入门教程

    摘要:语言入门教程一有名有姓的标识符语言规定,标识符可以是字母,数字下划线组成的字符串,并且第一个字符必须是字母或下划线。关系运算符语言中的关系运算符关系表达式的值是真和假,在程序用整数和表示。 ...

    leiyi 评论0 收藏0
  • java学习(二) —— java基础语法

    摘要:前言的基础语法与有很多相似之处,但是也有一些特定的关键词是独有的。以开头八进制由,,组成。整数默认是十进制十六进制由,,,,,,,,组成。初始化值必须初始化值,否则不能使用变量。 前言 java的基础语法与php有很多相似之处,但是也有一些特定的关键词是java独有的。 java的基础语法大体就包括:关键字,标识符,注释,常量,进制和进制转换,变量,数据类型和类型转换,运算符,语句 ...

    caiyongji 评论0 收藏0
  • ssssss

    摘要:运算符主要介绍不常用到的位运算符,位运算符都是相对整型二进制数位来说的假设是一个被移位的整型数据,是位移量。按位运算符也可以操作逻辑型数据。所以,如果以后有人问你是值传递还是引用传递,你直接告诉他这是个无聊的问题。 Java基础 关键字 主要介绍不常用到的关键字: native - native通常用来修饰方法,一个native方法就是一个Java调用非Java代码的接口(A nat...

    itvincent 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<