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 相关文章推荐
6款新颖的jQuery和CSS3进度条插件推荐
Mar 05 Javascript
jquery及原生js获取select下拉框选中的值示例
Oct 25 Javascript
JavaScript中字符串(string)转json的2种方法
Jun 25 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
BootStrap给table表格的每一行添加一个按钮事件
Sep 07 Javascript
vue地区选择组件教程详解
May 04 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
js前端设计模式优化50%表单校验代码示例
Jun 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调用数据库的存贮过程!
2006/10/09 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
python实现ping的方法
2015/07/06 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python占用的内存优化教程
2019/07/28 Python
pandas 空数据处理方法详解
2019/11/02 Python
python 消费 kafka 数据教程
2019/12/21 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
创业计划书中要认真思考的问题
2013/12/28 职场文书
程序员求职信
2014/04/16 职场文书
应聘教师自荐书
2014/06/16 职场文书
岗位安全生产责任书
2014/07/28 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
雨中的树观后感
2015/06/03 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
python中的sys模块和os模块
2022/03/20 Python