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 相关文章推荐
google 搜索框添加关键字实现代码
Apr 24 Javascript
10个基于Jquery的幻灯片插件教程
Oct 29 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
Oct 11 Javascript
javascript实现的右下角弹窗实例
Apr 24 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
JS组件Bootstrap导航条使用方法详解
Apr 29 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
Vue中遍历数组的新方法实例详解
Jul 21 Javascript
js实现图片3D轮播效果
Sep 21 Javascript
一行JavaScript代码如何实现瀑布流布局
Dec 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脚本数据库功能详解(上)
2006/10/09 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
幼儿园家长会邀请函
2014/01/15 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
业务员辞职信范文
2015/03/02 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL