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 相关文章推荐
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
JavaScript中两个感叹号的作用说明
Dec 28 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
js实现右键自定义菜单
Dec 03 Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 Javascript
Node.js调试技术总结分享
Mar 12 Javascript
layui问题之模拟select点击事件的实例讲解
Aug 15 Javascript
原生JS实现的自动轮播图功能详解
Dec 28 Javascript
tracking.js实现前端人脸识别功能
Apr 16 Javascript
JavaScript前端面试扁平数据转tree与tree数据扁平化
Jun 14 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学习之PHP变量
2006/10/09 PHP
PHP 字符串操作入门教程
2006/12/06 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
jquery indexOf使用方法
2013/08/19 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
初识Javascript小结
2015/07/16 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
python Canny边缘检测算法的实现
2020/04/24 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
班主任班级寄语大全
2014/04/04 职场文书
员工安全承诺书
2014/05/22 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技