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引擎的识别方法
Oct 20 Javascript
利用jQuery实现可输入搜索文字的下拉框
Oct 23 Javascript
jquery序列化表单以及回调函数的使用示例
Jul 02 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
jquery实现的判断倒计时是否结束代码
Feb 05 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
利用Three.js如何实现阴影效果实例代码
Sep 26 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
vue 监听 Treeselect 选择项的改变操作
Aug 31 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
Sep 21 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 一个页面执行时间类代码
2010/03/05 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
php创建图像具体步骤
2017/03/13 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
详解python 发送邮件实例代码
2016/12/22 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python访问hdfs的操作
2020/06/06 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
2014年高考决心书
2014/03/11 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
青年文明号汇报材料
2014/12/23 职场文书
护士辞职信怎么写
2015/02/27 职场文书
2015年护士节慰问信
2015/03/23 职场文书
赤壁观后感(2)
2015/06/15 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python