逻辑与和或

逻辑与

当 && 前后两个操作数都是布尔值,无可厚非,同时为true才为true。与其他强类型语言不同的是,javascript逻辑与前后的操作数可以应用于任何类型。

而且,在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。

如果第一个操作数是对象,则返回第二个操作数

 //返回 字符串:"this is the secondObject"
function LogicAnd1(){ var firstObject ={
valueOf:function(){
return 1;
}
}; var secondObject ="this is the secondObject"; return firstObject && secondObject;
}

如果第二个操作数是对象,则只有在第一个操作数的求值为true的情况下才返回该对象

 //firstObject 为true 返回该对象
//firstObject 为false 返回false
function LogicAnd2(){
var secondObject ={
valueOf:function(){
return 1;
}
}; var firstObject =false; return firstObject && secondObject;
}

如果两个都是对象{null 也是object,此处为非null对象},则返回第二个

 返回第二个
function LogicAnd3(){
var firstObject ={myName:"first"};
var secondObject ={myName:"second"}; return firstObject && secondObject;
}

任意一个为null,NaN,undefined  结果为null,NaN,undefined

 //任意一个为null 结果为null
function LogicAnd4(){
var firstObject =null;
var secondObject ={myName:"second"}; return firstObject && secondObject;
} //任意一个为Nan 结果为Nan
function LogicAnd5(){
var firstObject =NaN;
var secondObject ={myName:"second"}; return firstObject && secondObject;
} //任意一个为undefined 结果为undefined
function LogicAnd6(){
var firstObject =undefined;
var secondObject ={myName:"second"}; return firstObject && secondObject;
}

逻辑或

逻辑或同样可以应用在任意两个类型当中,其中:

第一个为对象,则返回第一个对象

 function LogicOr1(){
var firstObject ={
valueOf:function(){
return 1;
}
}; var secondObject ="this is the secondObject"; return firstObject || secondObject; }

如果第二个操作数是对象,则只有在第一个操作数的求值为false的情况下才返回该对象

 //firstObject 求值为false 返回该对象
//firstObject 求值为true 返回firstObject
function LogicOr2(){
var secondObject ={
valueOf:function(){
return 1;
}
}; var firstObject =1000; return firstObject || secondObject; }

如果两个都是对象{null 也是object,此处为非null对象},则返回第一个

 function LogicOr3(){
var firstObject ={myName:"first"};
var secondObject ={myName:"second"};
//返回第一个
return firstObject || secondObject;
}

两个都为null,undefined,NaN 则结果都为以上上个值

 //两个为null 结果为null
function LogicOr4(){
var firstObject =null;
var secondObject =null; return firstObject || secondObject;
} //两个为Nan 结果为Nan
function LogicOr5(){
var firstObject =NaN;
var secondObject =NaN; return firstObject || secondObject;
} //两个为undefined 结果为undefined
function LogicOr6(){
var firstObject =undefined;
var secondObject =undefined; return firstObject || secondObject;
}

最新文章

  1. ListFragment的使用
  2. Jenkins创建Maven项目及SSH部署
  3. [No000050]练习一万小时便能成为天才
  4. qbxt十一系列一
  5. GCD创建一个单例
  6. 谷歌chrome浏览器桌面提醒 webkitNotifications
  7. JavaScript开发之路01(初识Sencha Touch框架)
  8. oracle数据类型和对应的java类型
  9. 【转】S3C2440与SDRAM NorFlash NandFlash连线分析
  10. python3之模块collections
  11. Chapter 4 Invitations——15
  12. POC iis短文件名
  13. iOS 数组问题
  14. CentOS7+Apache+MySQL+PHP环境
  15. Scrapy安装错误:Microsoft Visual C++ 14.0 is required
  16. oracle之 11.2.0.4 bbed安装
  17. keil C 51 strlen库函数使用
  18. 第三方插件Vue-Lazyload
  19. Code Chef IMPO(计算几何+扫描线+积分)
  20. qtcreator 中文乱码

热门文章

  1. stout代码分析之二:None类
  2. 常见一个新的maven web工程
  3. 10.nginx+ffmpeg上搭建HLS切片
  4. UVA 11040 Add bricks in the wall
  5. 【设计模式】 模式PK:抽象工厂模式VS建造者模式
  6. mysql 创建视图
  7. Tomcat报错:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/JFreeChartTest]]
  8. 【BZOJ】1726 [Usaco2006 Nov]Roadblocks第二短路
  9. 【HNOI】 lct tree-dp
  10. 【bug】vue-cli 3.0报错的解决办法