运算优先级在复杂运算中有着举足轻重的作用,例如我们看个表达式:
我们知道void的作用是让表达式总是返回undefined,那么,void操作的对象究竟是1还是1+2呢?换句话说,void和+哪个的优先级更高?
我们不妨假设,如果void的优先级更高,那么,void操作的数将是1,操作结果变成( void 1 ) + 2,也就是undefined+2,结果将是NaN。
而如果相反,+的优先级更高,那么,结果将是void (1 + 2),也就是void 3也就是undefined。
那么,究竟是哪种呢?事实是NaN,也就是说,void的优先级更高。
我们将详细列出JavaScript中常见的运算符及它们的优先关系。注意,表格从上到下,优先级越来越低。
| 优先级 | 运算符 | 描述 |
|---|---|---|
| 最高 | . [ ] ( ) | 对象成员存取 数组下标 函数调用 |
| 从 | ++ - ~ ~ delete new typeof void | 一元运算符 |
| 上 | * / % | 乘法 除法 取模 |
| 到 | + - + | 加法 减法 字符串连接 |
| 下 | << >> >>> | 移位 |
| 的 | < <= > >= instanceof | 序列检测 继承关系 |
| 优 | == != === !== | 等值检测 |
| 先 | & | 按位与 |
| 级 | ^ | 按位异或 |
| 会 | | | 按位或 |
| 越 | && | 逻辑与 |
| 来 | || | 逻辑或 |
| 越 | ?: | 三元条件 |
| 低 | = op= | 赋值 运算赋值 |
| 最低 | , | 多重求值 |
同一优先级的不同或相同运算符同时出现在一个语句中时,按从左到右执行。
当然,类似CSS中的!important,JavaScript中也有一个强制改变优先级的符号,就是( ),括号内的运算会优先于括号外的运算。
本文通过实例解析了JavaScript中运算符的优先级,并提供了一个详细的运算符优先级表,帮助读者理解复杂的运算表达式。
1711

被折叠的 条评论
为什么被折叠?



