美文网首页
运算符&&的三个不同层次

运算符&&的三个不同层次

作者: 飞鱼YE | 来源:发表于2017-04-21 17:15 被阅读0次

运算符可以从三个不同的层次进行理解。

第一层理解:

当操作数都是布尔值时,“&&”对两个值执行布尔与(AND)操作。

x==0 && y==0 // 只有当x和y都是0时,才返回true

关系运算符的优先级比”&&”要高。

第二层理解:

”&&“可以对真值和假值进行布尔与(AND)操作。(假值有false、null、undefined、0、NaN和”“)。在JS中任何希望使用布尔值的地方,表达式和语句都会将其当做真值或假值来对待,因此实际上”&&”并不总是返回true和false。

null && true // =>null: 左操作数为假值,并将其返回,整个表达式为假
true && (5 - 3) // =>2: 左操作数为真,计算右操作数,并将其结果返回
第三层理解:

当运算符要返回一个真值或假值时,根据左操作数的值会遇到两种运算情况:运算符首先计算左操作数的值,如果计算结果是假值,那么整个表达式的结果一定也是假值,此时”&&“简单的返回左操作数的值,而并不会对右操作数进行计算。如果左操作数是真值,”&&“将计算右操作数的值并将其返回作为整个表达式的计算结果。

var o = {x:1};
var p = null;
o && o.x; // =>1 o是真值,返回o.x的值
p && p.y; // =>null: p是假值,将其返回,而不去计算p.y

”&&“的行为有时称作”短路“,我们将会看到很多代码利用了这一特性进行有条件地执行代码。例如下面两行代码是完全等价的:

if(a == b) stop();
(a == b) && stop();// 与上面语句等价
知识延伸

运算符“||”和”&&”一样也具有一些复杂的行为。
用来从一组备选表达式中选出第一个真值表达式:

// 先检查a是否是真值,如果是,返回a,否则和a处理方式相同地处理b
// 如果b是真值返回b,否则返回5
var max = a || b || 5;

这种用法在函数中可以用来给参数提供默认值:

function copy(o, p) {
p = p || {}; // 如果没有向参数p传递对象,就使用新创建的对象
// ...
}
运算符优先级

同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

相关文章

  • 运算符&&的三个不同层次

    运算符可以从三个不同的层次进行理解。 第一层理解: 当操作数都是布尔值时,“&&”对两个值执行布尔与(AND)操作...

  • 去选择你自己的生活层次(二)

    上面说了三个层次,今天谈谈剩下的几个层次。第四个层次和前三个层次有明显的不同之处。其实,前三个层次的人文化水...

  • 关于人生、幸福与爱情

    我们每个人都活在这三个层次中, 物质层次,精神层次,灵魂层次。 如果你问幸福是什么? 那么,不同层次的人有不同的领...

  • 与运算&&

    &&运算符可以从三个不同的层次去理解 1. 当操作数都是布尔值的时候,&&对两个值执行布尔与操作,只有在第一个操作...

  • 与运算&&

    &&运算符可以从三个不同的层次去理解 1. 当操作数都是布尔值的时候,&&对两个值执行布尔与操作,只有在第一个操作...

  • 生信流程搭建(四)GO、KEGG、DO富集的流程思路

    一、概念 1.1 GO分析 基因本体论是对基因在不同维度和不同层次上的描述。三个层次: Cellular comp...

  • 需求的三个层次

    我们的软件产品或者项目,其需求都有三个层级和三个方面。 需求的三个层次 软件需求包括3个不同的层次――业务需求、用...

  • 设计心理学3《情感化设计》读书笔记

    设计的三个不同层次:本能层次、行为层次和反思层次。 一 物品的意义 1 有吸引力的东西更好用 人类的感情、情绪和认...

  • 100天Day36九型人格

    九型人格理论认为我们大脑进化出了三个不同层次的区域,分别负责不同的情绪功能。面对同一情况,不同人优先启动哪个层次的...

  • 如何建立用户画像,了解用户目标 | 《About Face 4:

    用户目标 唐纳德·诺曼认为产品设计应该解决三个不同层次的认知和情感处理过程:本能、行为和反思,三个层次分别...

网友评论

      本文标题:运算符&&的三个不同层次

      本文链接:https://www.haomeiwen.com/subject/lpodzttx.html