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 相关文章推荐
javascript返回顶部效果(自写代码)
Jan 06 Javascript
jquery js 重置表单 reset()具体实现代码
Aug 05 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
在AngularJS框架中处理数据建模的方式解析
Mar 05 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
Feb 03 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
javascript面向对象三大特征之多态实例详解
Jul 24 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 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读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
Python实现图片拼接的代码
2018/07/02 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
python3处理word文档实例分析
2020/12/01 Python
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
师范生个人推荐信
2013/11/29 职场文书
致100米运动员广播稿
2014/02/14 职场文书
药店促销活动策划方案
2014/08/24 职场文书
化工生产实习心得体会
2016/01/22 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python