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 相关文章推荐
XmlUtils JS操作XML工具类
Oct 01 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
JS获取浏览器语言动态加载JS文件示例代码
Oct 31 Javascript
JavaScript中遍历对象的property的3种方法介绍
Dec 30 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
理解JavaScript原型链
Oct 25 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
p5.js临摹动态图形实现方法详解
Oct 23 Javascript
layui实现数据表格隐藏列的示例
Oct 25 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
Jun 01 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实现图片压缩的两则实例
2014/07/19 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
JavaScript事件列表解说
2006/12/22 Javascript
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js几个验证函数代码
2010/03/25 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
用Webpack构建Vue项目的实践
2017/11/07 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python轻松实现代码编码格式转换
2015/03/26 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python3标准库总结
2019/02/19 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
database面试题
2013/03/28 面试题
金鑫耀Java笔试题
2014/09/06 面试题
授权委托书公证
2014/09/14 职场文书
出国签证在职证明
2014/09/20 职场文书