`
zccst
  • 浏览: 3292310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js运算符优先级

阅读更多
作者:zccst

js运算符优先级也是一个巨大的坑。有时候你会被绕进去,例如:

var tpl = len > max && exceedTpl || defaultTpl;

按照我的理解,当len小于max时,第一个为假,后面又是&&,所以直接跳过执行下一行。
但实际是tpl等于defaultTpl。

测试用例:

3 > 5 && 'a' || 'b'; // 'b'
3 > 5 || 'a' && 'b'; // 'b'

解析: 3>5是false,与'a' &&,结果是false,继续执行表达式 ||,结果是'b'
3>5是false,与'a' ||,结果是true,由于后面是 && 必须执行,'b'也是true,最终结果是true,且返回 'b'。


5 > 3 && 'a' || 'b' ;//"a"
5 > 3 || 'a' && 'b' ;true

解析:
5 > 3 && 'a'为真,且后面是||,所以直接返回,不再计算。
5 > 3为真,且后面是||,所以直接返回,不再计算。

由于本例中,exceedTpl和defaultTpl始终为真。类似
3 > 5 && 'a' || 'b';或
5 > 3 && 'a' || 'b';
所以结果只有两种情况:前者是'b',后者是'a'
当最前面值相等的时候,大于仍然不成立,仍然结果是'b'




补充
3 > 5 || '' && 'b'; //''
5 > 3 && '' || 'b'; //"b"

因为3>5假,执行||,假,直接返回''
5>3为真,继续与''&&,结果为假,继续||,并返回||后面的值。

如果此时'b'是false,结果也返回false,即
5 > 3 && '' || false; //false



如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    javaScript 运算符优先级

    javaScript 运算符优先级,javaScript 运算符优先级快速查询

    JS运算符优先级与表达式示例详解

    运算符优先级决定了表达式中运算执行的先后顺序,优先级越高的运算符会先执行。 运算符优先级 很多时候由于对运算符优先级的不确定,会用括号来确保表达式的执行顺序。如果搞清楚运算符的优先级,即使不用括号也能...

    Vue 运算符优先级列表

    运算符优先级

    浅谈JavaScript中运算符的优先级

    下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。 运算符 描述 . [] () 字段访问、数组下标、函数调用以及表达式分组 ++ — – ~ ! delete new typeof void ...

    javascript 递归 计算器实现运算符优先级括号

    免费分享 自己写的 递归计算器 例如: 2+2/3+(33+6+(3-3*(33.44-4+(33*44.3/33+(333-33))))) 像这样的复杂运算,能够快速得出结果, 不调用系统的快速计算方法;...ps: javascript像这样复杂的连接公式 是得不出结果的;

    js.变量.运算符表达式.md

    js.变量.运算符表达式.md

    JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结

    主要介绍了JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作,结合实例形式整理总结了javascript运算符优先级,URL编码与解码,String,Math,arguments操作原理及使用技巧,需要的朋友可以...

    js利用与或运算符优先级实现if else条件判断表达式

    代码如下:[removed] /******************************************************************* 利用运算符优先级实现ifelse表达式 result = expression1 && expression2 当且仅当两个表达式的值都等于 True 时, ...

    Web前端开发技术-使用JavaScript运算符.pptx

    使用JavaScript运算符;算术运算符;使用JavaScript运算符;使用JavaScript运算符;使用JavaScript运算符;使用JavaScript运算符;比较运算符;使用JavaScript运算符;...运算符优先级;使用JavaScript运算符;

    Javascript算符的优先级介绍

    JavaScript中的运算符优先级是一套规则。该规则在计算表达式时控制运算符执行的顺序。具有较高优先级的运算符先于较低优先级的运算符执行。例如,乘法的执行先于加法。下表按从最高到最低的优先级列出JavaScript...

    1902_陈良鑫_02JavaScript运算符.docx

    JavaScript运算符 ①算数运算符 ②关系运算符 ③逻辑运算符 ④赋值运算符 ⑤条件运算符 2.JavaScript运算符的优先级

    JavaScript逻辑运算符相关总结

    首先我们需要知道几种逻辑运算符的优先级是不同的(关于完整的运算符优先级,看运算符优先级),逻辑非>逻辑与>逻辑或>条件运算符(三目运算符)。运算顺序条件运算符是从右向左,而逻辑与和逻辑或都是从左向右。 /...

    浅谈JS运算符&&和|| 及其优先级|angluo-javascript-159717.pdf

    下面小编就为大家带来一篇浅谈JS运算符&&和|| 及其优先级。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JavaScript基础第02天笔记1

    1.1 运算符的分类 1.2 算数运算符 1.3 递增和递减运算符 1.4 比较运算符 1.5 逻辑运算符 1.6 赋值运算符 1.7 运算符优先级 2.1 流

    javaScript帮助文档

    什么是 Jscript? 编写 JScript 代码 JScript 变量 JScript 数据类型 JScript 运算符 运算符优先级 控制程序流 条件编译 条件编译变量 JScript 函数

    jscript语言参考手册chm

    运算符优先级 控制程序流 条件编译 条件编译变量 JScript 函数 JScript 对象 固有对象 创建自己的对象 JScript 保留字 -------------------------------------------------------------------------------...

Global site tag (gtag.js) - Google Analytics