先介绍涉及到的概念

表达式:js中的短语,解释器在遇到表达式时,会将短语进行计算,然后再参与到运算中,表达式即js中的短语。

j所有的s代码都是由操作符和表达式组成的,因此除了操作符,其他的都是js中的表达式。

如1 + 1 这段代码中,+是操作符,前面的1和后面的1都是表达式。

表达式的分类:

原始表达式:常量(如π)、变量、直接量(数字、字符串、正则表达式)、关键字

初始化表达式:初始化对象和初始化数组

函数定义表达式:

函数调用表达式:

属性访问表达式:

对象创建表达式:使用new操作符创建函数

优先级:

优先级由高至低顺序:属性访问、一元操作符、乘除、加减、比较(<,>等)、判断相等(==,===,!==,!=)、与、或、三目运算、赋值运算

总结:属性访问表达式拥有最高优先级,其次是以操作符(new也属于一元操作符),优先级最低的是赋值运算。

例子:

var a = 3;
++a == 3;//false

上面的例子的结果是数值还是布尔类型,取决于运算的优先级,如果先进行判断a == 3,然后再执行++操作,那么结果是 a = 2,如果是先执行++运算,再判断a == 3,结果是false.

结和性:(优先级相同时看结合性)

分为左结合和右结合,

js中遵循右结合的有:一元操作符、三目运算、赋值运算,

其他所有都是遵循左结合的。

例子:

var a = 3;
!a++;

上面的例子中有两个操作符,一个是!,另一个是++,这两个都是一元操作符,如果从左至右进行计算,那结果是1;但是一元操作符是遵循右结合的,也就是说这个语句会先进行a++运算,然后再对a进行取非运算,结果是false.

再来一个例子:

x = a ? b : c ? d : e ? f : g

我看到的时候是很懵的,虽然应该不会有人这么写,但是这种写法是可以存在的,所以我们也要知道是怎么执行的,三目运算也是右结合性的,所以上面的例子等价于:x = a ? b : (c ? d : (e ? f : g ))

最后是运算顺序:

js中的表达式包含表达式时,运算顺序是从左至右。

var a = 1;
b = a++ + a;

var  a = 1;
b = a++ + ++a;

猜猜上面两个例子中执行后a和b分别等于什么

转载于:https://www.cnblogs.com/leraine/p/7610624.html

js 关于运算顺序的问题相关推荐

  1. PHP和JS三元运算顺序相反

    <?php $flag = 3; $result= $flag==1?1 :$flag==2?2 :$flag==3?3 :$flag==4?4 :$flag==5?5 :'default'; ...

  2. 值得深思的连续赋值--赋值运算符运算顺序

    最近在看到以前前辈留下的文章,对于连续赋值( var a={n:1}; a.x=a={n:2}) )这个知识点,一开始也搞不清楚,但是最终还是说服了自己,谈谈自己的心得.以下代码能回答正确的可以忽略本 ...

  3. c语言符合运算符的运算顺序,二 如何学习C语言的运算符和运算顺序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言的运算功能十分丰富,运算种类远多于其它程序设计语言.因此,当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则 ...

  4. c语言如何使四种运算符同级,二 如何学习C语言的运算符和运算顺序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言的运算功能十分丰富,运算种类远多于其它程序设计语言.因此,当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则 ...

  5. [云炬ThinkPython阅读笔记]2.5 运算顺序

    2.5 运算顺序 当一个表达式中有多于一个运算符时,计算的顺序由运算顺序(order of operations) 决定.对于算数运算符,Python 遵循数学里的惯例.缩写 PEMDAS 有助于帮助 ...

  6. 语言运算顺序题目_我的Python学习笔记:今天我学了关于Python里的运算符及运算顺序...

    2020年5月6日,天气晴 今天出奇的热,有33摄氏度这样子.我在昨天的基础上学习了有关于Python运算符及其运算顺序的相关知识.我的学习速度没有加快,就是为了能够多加深入地云掌握这些基础知识,也不 ...

  7. c语言中同级运算符的运算顺序,二 如何学习C语言的运算符和运算顺序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言的运算功能十分丰富,运算种类远多于其它程序设计语言.因此,当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则 ...

  8. CALCULATE函数的运算顺序-第一弹

    CALCULATE函数应该算是DAX语言中用的最广,最神奇,也最容易理解出错的一个函数.它具有重新设定筛选上下文,并且将行上下文转换为筛选上下文的能力. 在DAX函数中,绝大多数函数的执行顺序都是从左 ...

  9. c语言赋值运算与除法运算顺序,C语言运算符的优先级和结合律

    如果一个表达式包含两个或两个以上的运算符,那么操作数的结合方式将决定这个表达式的结果.为了简便,我们把包含两个或两个以上运算符的表达式称为复合表达式.例如:3 + 2 * 5 如果 3 和 2 结合在 ...

最新文章

  1. spring resource
  2. Hadoop 数据类型与文件结构剖析 Sequence, Map, Set, Array, BloomMap Files
  3. 计算机视觉招聘_香港理工大学人工智能设计实验室科研招聘
  4. 2.cocos2dx 3.2中语法的不同之处,lambada表达式的使用和function和bind函数的使用
  5. 线程间操作无效 progressBar2线程不能被访问
  6. LINUX下PHP安装VLD扩展并测试OK
  7. java 执行外部命令 苹果_Java中执行外部命令
  8. 中考新大纲:初中数学无非就这26个考点!孩子吃透,再笨也能考115分!
  9. 毕业设计-人脸表情识别系统、人工智能
  10. linux 批量创建用户和删除用户
  11. Linux运维故障排查——SSH连接Fedora不成功的原因
  12. 螃蟹保存方法保存时间_蜂巢蜜应该怎么保存,蜂巢蜜怎么保存的时间更长
  13. php图像销毁_php对图像的各种处理函数代码小结
  14. Docker容器中bash: ip: command not found
  15. IntelliJ IDEA搭建Hadoop开发环境(上)
  16. jena mysql_在Jena框架下基于MySQL数据库实现本体的存取操作
  17. 华为什么型号支持鸿蒙,哪些华为手机支持鸿蒙系统?华为支持鸿蒙OS手机型号清单...
  18. 康考迪亚计算机科学需要gre吗,康考迪亚大学研究生院化学工具专业录取条件
  19. C语言实验——求两个整数之中较大者
  20. bash文件无法运行,提示没有那个文件或目录的解决方法

热门文章

  1. 韩军星:汇报工作的四个层级
  2. 苹果正式推iOS 4.2可使iPad支持多任务
  3. Bitbucket Pipes发布,带来30+自动化CI/CD管道的方法
  4. day15-JavaScript字符串操作以及跑马灯示例
  5. VS 2017开发ASP.NET Core Web应用过程中发现的一个重大Bug
  6. MavenAnt使用
  7. printf语句中包含'\0'字符的处理
  8. SQL Server 的历史与发展方向
  9. JavaWeb_域对象的属性操作
  10. 码云创建maven工程