Js基础知识之-----逻辑运算符


⑴ && : 当全部条件都为true的时候, 返回true; 只要有一个为false, 则返回false; 返回的不必定是boolean值.cdn

一、能够操做任意类型的数据,不仅是布尔型;(除了null、undefined、NaN不会隐式转换)
var a = 33,b=55,c=88
console.log(a<b&&b<c);//返回true
若是在有一个操做数不是布尔值得状况下,逻辑与就不必定返回布尔值,此时它遵循下列规则
  • 若是前面操做数隐式类型转换后为true,则返回最后一个操做数:
          console.log(77&&33);//返回33
          console.log(true&&9&&"您好");//返回“您好”
          console.log(80 && true );//返回true
  • 若是前面有一个隐式转换后不是true,则返回第一个隐式转换为false的值(即短路的值)
          console.log(“”&&true);//返回空格
          console.log(44&&0&&"hello");//返回0
          console.log(55&&false&&0);//返回false
          console.log(0&&null&&55);//返回0
          console.log(NaN && 16 && "");//返回NaN
          console.log("" && NaN && 12);//返回“”空字符串
二、返回值不必定是boolean类型。null,返回null;undefined,返回undefined;NaN,返回NaN
          console.log(55*“abc”&&true);//返回NaN
          console.log(null&&true);//返回null
          console.log(undefined&&true);//返回undefined
          console.log(undefined&&null&&9&&NaN);//返回undefined
⑵ ||:只要一个条件为true,则返回true;都为false,则返回false
一、能够操做任意类型的数据,不仅是布尔型;
二、返回值不必定是boolean类型。
(有一个为true,则返回true,后面就被短路啦;都为false,一直走到最后一个,打印左后一个)
          console.log(33<22||33>11);//返回true
          console.log(undefined || null || 0);//返回0
          console.log(undefined || 88 || 99 );//返回88
          console.lof(undefined || 33>10 || false);//返回true
          console.log(null || undefined || NaN);//返回NaN
          console.log(NaN || undefined) ;//返回undefined
          console.log("hellow" || NaN);//返回hellow
⑶ !(逻辑非):返回值必定是boolean值
 
一、能够操做任意类型的数据,返回值必定是boolean值;
二、!!同时使用两个逻辑非操做符时——两次求反,为原本表明的boolean值
          console.log(!false);//true
          console.log(!88);//false
          console.log(!NaN);//true
          console.log(!!NaN);//false
          console.log(!!"hell");//true
相关文章
相关标签/搜索