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 相关文章推荐
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
InnerHtml和InnerText的区别分析
Mar 13 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
Jan 09 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
浅析JavaScript声明变量
Dec 21 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
JavaScript实现倒计时跳转页面功能【实用】
Dec 13 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
angular.js实现购物车功能
Oct 23 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 中文乱码解决办法总结分析
2009/07/30 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
offsetParent 算法分析
2010/04/05 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
实例分析javascript中的异步
2020/06/02 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python实现的文本编辑器功能示例
2017/06/30 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
pycharm实现猜数游戏
2020/12/07 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
2014自主招生自荐信策略
2014/01/27 职场文书
英语通知范文
2015/04/22 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
地震捐款简报
2015/07/21 职场文书
员工担保书范本
2015/09/22 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android