运算优先级

只谈情不闲聊 提交于 2020-03-05 05:57:54
###逻辑符的运算优先级表(根据优先级从大到小排列)```优先级    运算类型   关联性    运算符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、逻辑与 和 逻辑或 要在左右两边的运算完成以后,在进行 逻辑与  和 逻辑或 比较。 ### 这里是运算优先级的例子```<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body></body></html><script type="text/javascript">    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('因为两个都不成立,所以这里面的不打印');    }</script>```
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!