逻辑与和或

逻辑与

当 && 前后两个操作数都是布尔值,无可厚非,同时为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;
}

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. Codeforces Round #202 (Div. 2) B,C,D,E

    贪心 B. Color the Fence time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  2. HDU1711 KMP(模板题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. Scrapy中的Callback如何传递多个参数

    在scrapy提交一个链接请求是用 Request(url,callback=func) 这种形式的,而parse只有一个response参数,如果自定义一个有多参数的parse可以考虑用下面的方法实 ...

  4. Java中JAVA_HOME与CLASSPATH的解析(转)

    很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变量,在开发程序的时候设置CLASSPATH环境变量,而很多 ...

  5. 洛谷 2957 [USACO09OCT]谷仓里的回声Barn Echoes

    题目描述 The cows enjoy mooing at the barn because their moos echo back, although sometimes not complete ...

  6. 【C++ STL】List

    1.结构 list使用一个double linked list(双向链表)来管理元素. 2. list 能力 list内部结构和vector或deque截然不同,所以与他们的区别: list不支持随机 ...

  7. git高级用法

    1.git未保存的代码怎么切换分支? 2.两个分支的代码怎么合并?怎么解决冲突? 常见报错: 1.Merge failed : Some unreacked working tree files wo ...

  8. 【游记】GDOI 2017

    Day 0 学校好大>_<! 酒店好高级>_<! 晚上复习代码的时候很困QAQ,中间和hwh面基.复习到SA的时候因为太久没看忘记板子的意思了又背不下来,于是不看了,相信考了也 ...

  9. 修改ES使用root用户运行

    默认ES不允许使用root用户运行,如果使用root会报如下图的错误: ,通常建议创建elsearch用户并使用该用户运行ES.但如果必须使用root用户时,按如下设置即可: 1.启动是使用如下命令 ...

  10. win10远程桌面配置

    Win10连接远程桌面的时候提示您的凭证不工作该怎么办? http://www.cnblogs.com/zhuimengle/p/6048128.html 二.服务器端 1.依旧进入组策略,不过是在服 ...