几个运算符 给我不一样的 体验
其中我觉得需要我做笔记的有: a++ 与 ++a 这两个相当于返回两个值 其中一个值是a 本身 a++这个运算的值为a 之后a=a+1 ++a是a=a+1的值返回给了这公式 同时a=a+1.
多目运算符(?:)与其他运算式结合算法: var a=2; a=a-=1?a++:a--; console.log("a"); 其中首先运算多目运算符公式相当于a=a-=(a++),此时a++的值是a 需要注意的是 a++的另一个返回值并没有改变a的值也就是说 a++没有自加因为没有正常运算到这个位置, 所以打印的a为0. 异或运算符:^异或是相同为0 不同为1
优先级问题
| 优先级 | 运算类型 | 关联性 | 运算符 |
|---|---|---|---|
| 19 | 圆括号 | n/a | ( … ) |
| 18 | 成员访问 | 从左到右 | … . … |
需计算的成员访问 | 从左到右 | … [ … ] | |
new (带参数列表) | n/a | new … ( … ) | |
| 17 | 函数调用 | 从左到右 | … ( |
| new (无参数列表) | 从右到左 | new … | |
| 16 | 后置递增(运算符在后) | n/a | … ++ |
| 后置递减(运算符在后) | n/a | … -- | |
| 15 | 逻辑非 | 从右到左 | ! … |
| 按位非 | 从右到左 | ~ … | |
| 一元加法 | 从右到左 | + … | |
| 一元减法 | 从右到左 | - … | |
| 前置递增 | 从右到左 | ++ … | |
| 前置递减 | 从右到左 | -- … | |
| typeof | 从右到左 | typeof … | |
| void | 从右到左 | void … | |
| delete | 从右到左 | delete … | |
| 14 | 乘法 | 从左到右 | … * … |
| 除法 | 从左到右 | … / … | |
| 取模 | 从左到右 | … % … | |
| 13 | 加法 | 从左到右 | … + … |
| 减法 | 从左到右 | … - … | |
| 12 | 按位左移 | 从左到右 | … << … |
| 按位右移 | 从左到右 | … >> … | |
| 无符号右移 | 从左到右 | … >>> … | |
| 11 | 小于 | 从左到右 | … < … |
| 小于等于 | 从左到右 | … <= … | |
| 大于 | 从左到右 | … > … | |
| 大于等于 | 从左到右 | … >= … | |
| in | 从左到右 | … in … | |
| instanceof | 从左到右 | … instanceof … | |
| 10 | 等号 | 从左到右 | … == … |
| 非等号 | 从左到右 | … != … | |
| 全等号 | 从左到右 | … === … | |
| 非全等号 | 从左到右 | … !== … | |
| 9 | 按位与 | 从左到右 | … & … |
| 8 | 按位异或 | 从左到右 | … ^ … |
| 7 | 按位或 | 从左到右 | … | … |
| 6 | 逻辑与 | 从左到右 | … && … |
| 5 | 逻辑或 | 从左到右 | … || … |
| 4 | 条件运算符 | 从右到左 | … ? … : … |
| 3 | 赋值 | 从右到左 | … = … |
… += … | |||
… -= … | |||
… *= … | |||
… /= … | |||
… %= … | |||
… <<= … | |||
… >>= … | |||
… >>>= … | |||
… &= … | |||
… ^= … | |||
… |= … | |||
| 2 | yield | 从右到左 | yield … |
| yield* | 从右到左 | yield* … | |
| 1 | Spread | n/a | ... … |
| 0 | 逗号 | 从左到右 | … , … |