最简洁的条件运算

||&&操作符

看到下面的式子,新人肯定认为他们的值是truefalse

a || b   c && d

布尔的运算难道不是truefalse

1 && 2 && 3 && 4 && 5        //5 
1 && 0 && 2 && 3 && 4 && 5      //0
1 && 0 && console.log(3)    //0

&&找第一个假值,如果没有假值,返回最后一个真值

0 || undefined || 1 || null         //1
0 || undefined || null      //null

||找第一个真值,如果没有真值,返回最后一个假值

Boolean 内部不是简单的输出truefalse,因为除了5个falsy值之外其它指对Boolean 来说都是true,所以刚开始接触的时候会很迷惑。

明白了这些之后,可以利用这个特性做一些小技巧

var a = 1       //不合格代码

做项目时不知道前面有没定义a,这样写的话很容易除bug

所以在定义a时可以做一个判断

var a = a || {}     //如果前面有a,就用前面定义的a;如果前面没有a,就用a = {}

等价于:

if(a){
    a=a     //如果a存在,就运行a
}else{
    a={}    //如果a不存在,把a赋值为{}
}

等价于:

if(!window.a){      //写成!a的话,如果a真的不存在,会报错。
    a = {}
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 481评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,199评论 0 13
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 819评论 0 1
  • 临江这座小城大部分居民都是闯关东过来的山东人,山东人的饮食习惯依然有很多家庭还保留着,吃煎饼也是我们从小到大的习惯...
    子卿_86ce阅读 364评论 0 1