逻辑与和或

逻辑与

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

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

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

  1. //返回 字符串:"this is the secondObject"
  2. function LogicAnd1(){
  3.  
  4. var firstObject ={
  5. valueOf:function(){
  6. return 1;
  7. }
  8. };
  9.  
  10. var secondObject ="this is the secondObject";
  11.  
  12. return firstObject && secondObject;
  13. }

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

  1. //firstObject 为true 返回该对象
  2. //firstObject 为false 返回false
  3. function LogicAnd2(){
  4. var secondObject ={
  5. valueOf:function(){
  6. return 1;
  7. }
  8. };
  9.  
  10. var firstObject =false;
  11.  
  12. return firstObject && secondObject;
  13. }

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

  1. 返回第二个
  2. function LogicAnd3(){
  3. var firstObject ={myName:"first"};
  4. var secondObject ={myName:"second"};
  5.  
  6. return firstObject && secondObject;
  7. }

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

  1. //任意一个为null 结果为null
  2. function LogicAnd4(){
  3. var firstObject =null;
  4. var secondObject ={myName:"second"};
  5.  
  6. return firstObject && secondObject;
  7. }
  8.  
  9. //任意一个为Nan 结果为Nan
  10. function LogicAnd5(){
  11. var firstObject =NaN;
  12. var secondObject ={myName:"second"};
  13.  
  14. return firstObject && secondObject;
  15. }
  16.  
  17. //任意一个为undefined 结果为undefined
  18. function LogicAnd6(){
  19. var firstObject =undefined;
  20. var secondObject ={myName:"second"};
  21.  
  22. return firstObject && secondObject;
  23. }

逻辑或

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

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

  1. function LogicOr1(){
  2. var firstObject ={
  3. valueOf:function(){
  4. return 1;
  5. }
  6. };
  7.  
  8. var secondObject ="this is the secondObject";
  9.  
  10. return firstObject || secondObject;
  11.  
  12. }

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

  1. //firstObject 求值为false 返回该对象
  2. //firstObject 求值为true 返回firstObject
  3. function LogicOr2(){
  4. var secondObject ={
  5. valueOf:function(){
  6. return 1;
  7. }
  8. };
  9.  
  10. var firstObject =1000;
  11.  
  12. return firstObject || secondObject;
  13.  
  14. }

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

  1. function LogicOr3(){
  2. var firstObject ={myName:"first"};
  3. var secondObject ={myName:"second"};
  4. //返回第一个
  5. return firstObject || secondObject;
  6. }

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

  1. //两个为null 结果为null
  2. function LogicOr4(){
  3. var firstObject =null;
  4. var secondObject =null;
  5.  
  6. return firstObject || secondObject;
  7. }
  8.  
  9. //两个为Nan 结果为Nan
  10. function LogicOr5(){
  11. var firstObject =NaN;
  12. var secondObject =NaN;
  13.  
  14. return firstObject || secondObject;
  15. }
  16.  
  17. //两个为undefined 结果为undefined
  18. function LogicOr6(){
  19. var firstObject =undefined;
  20. var secondObject =undefined;
  21.  
  22. return firstObject || secondObject;
  23. }

javascript高程笔记:逻辑与和逻辑或的更多相关文章

  1. JAVASCRIPT高程笔记-------第五章 引用类型

    一.Object类型 1.1创建方式 ①new关键字 : var person = new Oject(); ②给定直接量: var person = { name : "zhangsan& ...

  2. DOM(JavaScript高程笔记)

    一.节点层次 1.Node类型 if (someNode.nodeType == 1){ // 适用于所有浏览器 alert("Node is an element."); } N ...

  3. 函数表达式(JavaScript高程笔记)

    函数声明 特点:函数声明提升(执行代码之前解析器会先读取函数声明,并使其在执行任何代码之前可用,意味着可以把函数声明放在调用语句之后) function functionName(arg0,arg1) ...

  4. javaScript高程笔记--最佳实践

    1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...

  5. JAVASCRIPT高程笔记-------JSON与AJAX

    json对象——语法 简单值:与JS相同语法,可以是字符串,数值,布尔值,null:但不支持undefined 对象: 复杂数据类型,表示一组有序的键值对,键值对的值可以是简单数据,也可以是复杂数据 ...

  6. JAVASCRIPT高程笔记-------第十章 DOM对象

    10.1.1 node类型 --除IE外 所有浏览器都可以访问到这个类型 :JS中所有的节点类型都继承自Node类型 nodeName 与nodeValue  如果是一个元素 那么nodeName中保 ...

  7. javascript高程笔记-------第四章 变量、作用域和内存问题

    首先JavaScript中的变量分为基本类型和引用类型. 基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象. 1.参数传递 javascript中所有参数的传递都是值传 ...

  8. BOM(JavaScript高程笔记)

    再次编辑于20160115 一.window对象 双重角色 JS访问浏览器窗口的接口 ECAMAscript规定的Global对象 1.全局作用域 所有在全局作用域中声明的变量.函数都会变成windo ...

  9. JAVASCRIPT高程笔记-------第八章 浏览器BOM对象

    8.1 window对象--表示一个浏览器的实例 在全局作用域中声明的任何变量.函数都会变成window对象的属性和方法,与之直接定义window对象的属性的区别是   window.xxx 可以通过 ...

随机推荐

  1. ACE线程管理机制-线程的创建与管理

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/04/581369.html 有过在不同的操作系统下用c++进行过多线程编程的朋友对那些线程处理 ...

  2. LightOJ 1326 – Race 第二类Stirling数/

    简单的模板题. 题意:问n匹马出现的不同排名数. 题解:可以使用DP,本质上还是第二类Stirling数(隔板法) #include <stdio.h> #include <iost ...

  3. Bat 命令相关

    1. bat 里面怎么sleep 等待: ping 127.0.0.1 -n 2000 > nul 2. net use 建立映射: net use Y: \\172.16.10.240\Inf ...

  4. 自定义View的实现流程

    1.继承View组件,比如,LabelView继承了View   2.重写两个构造方法,比如,对于自定义View LabelView   LabelView(Context context),如果该自 ...

  5. bzoj 3524 可持久化线段树

    我们可以先离散化,然后建立权值的可持久化线段树,记录每个数出现的次数,对于区间询问直接判断左右儿子的cnt是不是大于(r-k+1)/2,然后递归到最后一层要是还是大于就有,否则不存在. 反思:挺简单一 ...

  6. 打开Android系统安装APK的页面

    //使用隐式意图开启安装APK的Activity Intent intent = new Intent("android.intent.action.VIEW"); intent. ...

  7. CTF线下赛AWD模式下的生存技巧

    作者:Veneno@Nu1L 稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 原文:https://www.anquanke.com/post/id/8467 ...

  8. 金融分析二:Matplotlib模板

    Matplotlib:绘图和可视化 Matplotlib是一个强大的Python绘图和数据可视化的工具包. 安装方法:pip install matplotlib 引用方法:import matplo ...

  9. Linux 入门记录:二、Linux 文件系统基本结构

    一.树状目录结构 Linux 文件系统是一个倒置的单根树状结构.文件系统的根为"/":文件名严格区分大小写:路径使用"/"分割(Windows 中使用" ...

  10. defconfig file 的 位置

    Platform MSM8917 MSM8937 defconfig file position Android/kernel/msm-3.18/arch/arm/configs/