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 相关文章推荐
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 Javascript
JS 自定义带默认值的函数
Jul 21 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
Feb 03 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
JavaScript错误处理
Feb 03 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
一些手写JavaScript常用的函数汇总
Apr 16 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实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
js onload处理html页面加载之后的事件
2013/10/30 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
react+redux仿微信聊天界面
2019/06/21 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
python 数据加密代码
2008/12/24 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Python实现代码块儿折叠
2020/04/15 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
给老婆大人的检讨书
2014/02/24 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
教师个人事迹材料
2014/12/17 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python