JS运算符优先级与表达式示例详解


Posted in Javascript onSeptember 04, 2020

前言

运算符优先级决定了表达式中运算执行的先后顺序,优先级越高的运算符会先执行。

运算符优先级

JS运算符优先级与表达式示例详解

很多时候由于对运算符优先级的不确定,会用括号来确保表达式的执行顺序。如果搞清楚运算符的优先级,即使不用括号也能确保表达式按照正确的顺序执行。

其实单纯靠运算符的优先级来确定表达式的执行过程并不是一个绝对稳妥的做法,比如 new a()['b'] 这样的表达式就没法套用运算符优先级。当然一般情况下,绝大多数表达式我们都可以利用运算符优先级来判断,如果确实遇到比较复杂的难以直观判断出来的情况还是要查询 ECMAScript262 标准中的产生式。

表达式

左手表达式

左手表达式即 Left-Hand-Side Expression,即能出现在赋值运算左边的表达式。几乎所有的左手表达式都可以作为右手表达式,这在大部分编程语言中都是通用的。JS 中的左手表达式的详细规则请看ECMAScript262-left-hand-side expression。标准中没有定义右手表达式,因为合法的表达式只要不是左手表达式就是右手表达式,所以不需要在单独定义。有一点需要注意的是 ++ 和 -- 的操作数也要是一个左手表达式。

一些细节

  1. 关联性和优先级一样重要,关联性决定了拥有相同优先级的运算符的执行顺序。
  2. 优先级为 19 的除了图中 member运算、带参数new ,还有带标签的模版字符串(可以理解为和函数调用类似),new.target,super作为对象使用(和成员访问相同)
  3. 函数调用的优先级在图中也是 19,但实际似乎优先级是要低于 member运算 和单参数 new 运算符的。当函数调用后接 member 运算符整个式子还是函数调用等级的。
  4. 一元加、一元减和算术运算符的加减是不同的,一元加和一元减都会讲操作数转为 Number,这也是它可以将函数声明转为函数表达式的原因。

总结

到此这篇关于JS运算符优先级与表达式的文章就介绍到这了,更多相关JS运算符优先级与表达式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS面向对象编程 for Cookie
Sep 19 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
jQuery的图片滑块焦点图插件整理推荐
Dec 07 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
浅谈jquery中delegate()与live()
Jun 22 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
Mar 17 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
浅谈vue项目可以从哪些方面进行优化
May 05 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
Jan 11 Javascript
vue中的循环对象属性和属性值用法
Sep 04 #Javascript
JavaScript逻辑运算符相关总结
Sep 04 #Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 #Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 #Javascript
JS变量提升及函数提升实例解析
Sep 03 #Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 #Javascript
Vue js with语句原理及用法解析
Sep 03 #Javascript
You might like
小偷PHP+Html+缓存
2006/11/25 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
Python中标准模块importlib详解
2017/04/16 Python
Python文件操作基本流程代码实例
2017/12/11 Python
Python实战之制作天气查询软件
2019/05/14 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
公司大门门卫岗位职责
2014/06/11 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
我是特种兵观后感
2015/06/11 职场文书
现实表现证明材料
2015/06/19 职场文书
新闻稿标题
2015/07/18 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
运动会致辞稿
2015/07/29 职场文书
Python序列化模块JSON与Pickle
2022/06/05 Python