运算符优先级

下面的表将所有运算符按照优先级的不同从高(20)到低(1)排列。

优先级运算类型关联性运算符
20圆括号n/a(不相关)( … )
19成员访问从左到右… . …
需计算的成员访问从左到右… [ … ]
new (带参数列表)n/anew … ( … )
函数调用从左到右… ( … )
可选链(Optional chaining)从左到右?.
18new (无参数列表)从右到左new …
17后置递增(运算符在后)n/a
 
… ++
后置递减(运算符在后)… --
16逻辑非从右到左! …
按位非~ …
一元加法+ …
一元减法- …
前置递增++ …
前置递减-- …
typeoftypeof …
voidvoid …
deletedelete …
awaitawait …
15从右到左… ** …
14乘法从左到右
 
… * …
除法… / …
取模… % …
13加法从左到右
 
… + …
减法… - …
12按位左移从左到右… << …
按位右移… >> …
无符号右移… >>> …
11小于从左到右… < …
小于等于… <= …
大于… > …
大于等于… >= …
in… in …
instanceof… instanceof …
10等号从左到右
 
… == …
非等号… != …
全等号… === …
非全等号… !== …
9按位与从左到右… & …
8按位异或从左到右… ^ …
7按位或从左到右… | …
6逻辑与从左到右… && …
5逻辑或从左到右… || …
4条件运算符从右到左… ? … : …
3赋值从右到左… = …
… += …
… -= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
2yield从右到左yield …
yield*yield* …
1展开运算符n/a... …
0逗号从左到右… , …

从左到右、从右到左

从左到右:需要从左到右一次计算,比如逗号,与或,等于、不等于;

从右到左:左右是两个独立的块儿,比如所有的赋值运算符,幂运算符 ,new typeof await关键词,三目运算符是三个独立的块儿,和if else性质一致。

三元操作符 :

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

// Equivalent to:

function example(…) {
    if (condition1) { return value1; }
    else if (condition2) { return value2; }
    else if (condition3) { return value3; }
    else { return value4; }
}

六部分:

1、括号  

()          ==> . [] new Func()

2、自增自减

i++ i--     ==>   ++i --i +i -i !  typeof await

 3、幂运算 

加减、乘除、幂运算

**          ==>  *  / %   + -

4、大于小于

> < >= <=   ==>  == !=  ===  !==

5、与或三目

&&  ||  ? :

 6、赋值

赋值= ... ,

简化版

运算类型运算符
圆括号()
属性访问、计算属性访问、函数调用、new操作符… . …… [ … ]… ( … )new … ( … )
后置递增、后置递减… ++… --
逻辑非、一元加减、前置递增递减、typeof、wait! …+ …- …++ …-- …typeof …await …
幂运算|乘除取余|加减… \** …              |              … \* …… / …… % …               |           … + …… - …
大于、小于、大于等于、小于等于、in、instanceof… > …… < …… >= …… <= …… in …… instanceof …
等于、不等于、全等于、非全等于… == …… != …… === …… !== …
逻辑与|逻辑或|三目运算符&& || … ? … : …
赋值=、+=、-=、*=、/=、%=
展开运算符...
逗号运算符,

三目运算符(条件运算符)

执行顺序,执行条件的判断,根据true或false,执行对应的表达式

 

实例

(1)

return typeof obj === "object" || typeof obj === "function" ?
			class2type[toString.call(obj)] || "object" :
			typeof obj;

(2)逗号运算符:

数组中

var num = 1;
var arr = [num, num +2, num +4];

函数默认参数中:

function sum(a =1, b = 2*a){
}

函数参数中:

fToBind.apply(
                   fNOP.prototype.isPrototypeOf(this) ? this : otherThis, baseArgs
            )

(3)查看数组每项的个数

        var obj = {};
        var arr = ['a','b','a','c'];
        var sum = arr.reduce((acc, cur, index) => {
            // if(acc.indexOf(cur) != -1){
            //     obj[cur]++;
            // }else {
            //     obj[cur] =  1;
            //     acc.push(cur);
            // }
            acc.indexOf(cur) != -1 ? obj[cur]++ : (obj[cur] =  1 , acc.push(cur))
            // acc.indexOf(cur) != -1 ? obj[cur]++ : (obj[cur] =  1) && acc.push(cur)
            return acc;
        }, [])
        console.log(sum); // ["a", "b", "c"]
        console.log(obj)  //{a: 2, b: 1, c: 1}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值