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 相关文章推荐
Javascript在IE或Firefox下获取鼠标位置的代码
Dec 18 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
js中用cssText设置css样式的简单方法
Sep 19 Javascript
分类解析jQuery选择器
Nov 23 Javascript
windows下vue-cli及webpack搭建安装环境
Apr 25 Javascript
ECMAscript 变量作用域总结概括
Aug 18 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
Dec 25 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
JavaScript实现雪花飘落效果
Dec 27 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP开发注意事项总结
2015/02/04 PHP
PHP实现添加购物车功能
2017/03/06 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
React中使用UMEditor的方法示例
2019/12/27 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
Python urlopen 使用小示例
2008/09/06 Python
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
python语言基本语句用法总结
2019/06/11 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
小学科学教学计划
2015/01/21 职场文书
怎样写工作总结啊!
2019/06/18 职场文书