"逻辑与"以及"逻辑或"对于码农来讲是最最基础的知识点了,不过在JavaScript里面,这两个运算的规律性似乎不容易把握,特别是网上一大堆文章对其进行介绍后,就变得更乌烟瘴气了,为了正视听,本人写篇短文简绍一下这两个运算符。
其实逻辑与和逻辑或的运算规则非常简单,完全不需要记忆各种情况,不信你看:
- &&(逻辑与):这货就是为了找坏蛋而存在的,找到坏蛋就返回这个坏蛋,如果找到最后也没找到坏蛋,那就会返回最后一个操作数;
- ||(逻辑或):这货就是为了找好人而存在的,找到好人就返回这个好人,如果找到最后也没找到好人,那么就会返回最后一个操作数;
那么什么是坏蛋呢? 能转化为false的都是坏蛋:null, 0, undefined(未被重写过), NaN, ""(空字符串), false。除了坏蛋之外,其他的就都是好人了。
规则就是这么简单,随便写几个试试就知道正确性了:
- false && 1 && 0; // return false:找坏蛋,第一个就是,立刻返回这个坏蛋 false
- 1 && 0 && "hi"; // return 0: 找坏蛋,1是好人,继续找;0是坏蛋,立刻返回坏蛋 0
- 1 && -1 && "ketty"; // return ketty: 找坏蛋,第一个不是,第二个还不是,最后一个也不是,所以,返回最后一个操作数 ketty
- 0 || {}; // return {}: 找好人,第一个不是,第二个是,返回 {}
- 0 || "" || null; // return null: 找好人,第一个不是,第二个不是,最后一个也不是,返回最后一个操作数 null
是不是很简单呢?以后还会混乱么? 人家语言本身对这两个操作符设计得还是很到位的,不要因为没有从本质上理解它们,就觉得它们不好用。