慕课网JavaScript深入浅出学习笔记之表达式和运算符

JavaScript表达式和运算符

表达式

表达式是一种JS短语,可使JS解释器用来产生一个值。——《JavaScript权威指南》

  • 原始表达式

    • 常量、直接量 345, string
    • 关键字 nullthis
    • 变量 a, b, c
  • 复合表达式 # 原始表达式+运算符 a + b

  • 数组、对象的初始化表达式

[1, 2] == new Array(1, 2);
[a,,b] == [a, undedined, b]
{c: 1, d: 2}

  • 函数表达式 var foo = function(){};

  • 属性访问表达式 var a = {x: 1}; 可以通过 a.xa['x'] 访问对象的属性

  • 调用表达式 function();

  • 对象创建表达式 new Func(x, y);

运算符

按照操作数的数量分类:

  • 一元 - x
  • 二元 a + b
  • 三元 c ? a : b

按照运算符的功能分类:

  • 赋值 x += 1 # =、+=、-=
  • 比较 x == y # ==、<、>
  • 算术 x - y # +、-、*、/、%
  • a | b
  • 逻辑 exp1 && exp2
  • 字符串 "a" + "b"
  • 特殊 delete obj.x new in instanceof

运算符优先级,从高到低排列:摘自MDN

优先级 运算类型 关联性 运算符
20 圆括号 n/a ( … )
19 成员访问 从左到右 … . …
. 需计算的成员访问 从左到右 … [ … ]
. new (带参数列表) n/a new … ( … )
. 函数调用 从左到右 … ( … )
18 new (无参数列表) 从右到左 new …
17 后置递增(运算符在后) n/a … ++
. 后置递减(运算符在后) … --
16 逻辑非 从右到左 ! …
. 按位非 ~ …
. 一元加法 + …
. 一元减法 - …
. 前置递增 ++ …
. 前置递减 -- …
. typeof typeof …
. void void …
. delete delete …
. await await …
15 从右到左 … ** …
14 乘法 从左到右 … * …
. 除法 … / …
. 取模 … % …
13 加法 从左到右 … + …
. 减法 … - …
12 按位左移 从左到右 … << …
. 按位右移 … >> …
. 无符号右移 … >>> …
11 小于 从左到右 … < …
. 小于等于 … <= …
. 大于 … > …
. 大于等于 … >= …
. in … in …
. instanceof … instanceof …
10 等号 `从左到右 … == …`
. 非等号 … != …
. 全等号 … === …
. 非全等号 … !== …
9 按位与 从左到右 … & …
8 按位异或 从左到右 … ^ …
7 按位或 从左到右 … 丨 …
6 逻辑与 从左到右 … && …
5 逻辑或 从左到右 … 丨丨 …
4 条件运算符 从右到左 … ? … : …
3 赋值 从右到左 … = …
. … += …
. … -= …
. … *= …
. … /= …
. … %= …
. … <<= …
. … >>= …
. … >>>= …
. … &= …
. … ^= …
. … 丨= …
2 yield 从右到左 yield …
. yield* yield* …
1 展开运算符 n/a ... …
0 逗号 从左到右 … , …
posted @ 2018-04-06 20:54  joycessh  阅读(140)  评论(0)    收藏  举报