js 逻辑运算符

第一个操作数 第二个操作数 结果
true

true 

true
true false false
false true false
false false

false

 

 

 

 

 

 

一:and(&&)与逻辑运算符

注:如果两边的操作数有一个不是布尔值,与运算就不一定返回布尔值,此时遵循一下规则:

var box={} && (5>4);     //true,第一个为对象,返回第二个操作数
var box=(5>4) &&{};            //[object Object],第二个操作数是对象,则第一个操作数返回true,才返回第二个操作数,否则返回false
var box=(3>4) &&{};            //false
var box=(5>4) && null       //null,有一个操作数为null,返回null
var box=(5>4) && undefined  //undefined

重要:如果第一个操作数为false,那么后面不管是什么都返回false

 

第一个操作数 第二个操作数 结果
true true true
true false true
false true true
false false false

 

 

 

 

 

二:或(||)与逻辑运算

注:如果两边有一个不是布尔值,遵守一下规则:

var box={}||(5>3);       //[object Object],第一个操作数为对象,返回第一个
var box=(5>3)||{};       //true
var box={}||{};         //[object Object],如果两个都是对象,返回第一个对象
var box=null||null         //null,两个为null,返回null
var box=NaN || NaN         //NaN,两个都是NaN,返回NaN
var box=undefined || undefined //undefined,两个为undefined,返回undefined
var box=true||age          //true,age未定义,第一个为真,返回真
var box=false ||age        //出错,age未定义

     便利贴:我们可以利用逻辑或运算符这一特性避免为变量赋值null或undefined值

三: 逻辑取反 (!)

var box=!(5>4)    //false
var box=!{}            //false,操作数是一个对象返回false
var box=!''            //true,操作数为空字符串返回true
var box=!'lee';        //false,非空字符串返回false
var box=!0;            //true,为0时返回true
var box=!8;            //false,非0数值包括Infinity,返回false
var box=!null       //true,null返回true
var box=!NaN;        //true
var box=!undefined;    //true
这个人比较懒,笔记也粗糙。没得救了。
原文地址:https://www.cnblogs.com/xiaoxinzi/p/8485308.html