javascript高程笔记:逻辑与和逻辑或
逻辑与和或
逻辑与
当 && 前后两个操作数都是布尔值,无可厚非,同时为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高程笔记:逻辑与和逻辑或的更多相关文章
- JAVASCRIPT高程笔记-------第五章 引用类型
一.Object类型 1.1创建方式 ①new关键字 : var person = new Oject(); ②给定直接量: var person = { name : "zhangsan& ...
- DOM(JavaScript高程笔记)
一.节点层次 1.Node类型 if (someNode.nodeType == 1){ // 适用于所有浏览器 alert("Node is an element."); } N ...
- 函数表达式(JavaScript高程笔记)
函数声明 特点:函数声明提升(执行代码之前解析器会先读取函数声明,并使其在执行任何代码之前可用,意味着可以把函数声明放在调用语句之后) function functionName(arg0,arg1) ...
- javaScript高程笔记--最佳实践
1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...
- JAVASCRIPT高程笔记-------JSON与AJAX
json对象——语法 简单值:与JS相同语法,可以是字符串,数值,布尔值,null:但不支持undefined 对象: 复杂数据类型,表示一组有序的键值对,键值对的值可以是简单数据,也可以是复杂数据 ...
- JAVASCRIPT高程笔记-------第十章 DOM对象
10.1.1 node类型 --除IE外 所有浏览器都可以访问到这个类型 :JS中所有的节点类型都继承自Node类型 nodeName 与nodeValue 如果是一个元素 那么nodeName中保 ...
- javascript高程笔记-------第四章 变量、作用域和内存问题
首先JavaScript中的变量分为基本类型和引用类型. 基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象. 1.参数传递 javascript中所有参数的传递都是值传 ...
- BOM(JavaScript高程笔记)
再次编辑于20160115 一.window对象 双重角色 JS访问浏览器窗口的接口 ECAMAscript规定的Global对象 1.全局作用域 所有在全局作用域中声明的变量.函数都会变成windo ...
- JAVASCRIPT高程笔记-------第八章 浏览器BOM对象
8.1 window对象--表示一个浏览器的实例 在全局作用域中声明的任何变量.函数都会变成window对象的属性和方法,与之直接定义window对象的属性的区别是 window.xxx 可以通过 ...
随机推荐
- ACE线程管理机制-线程的创建与管理
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/04/581369.html 有过在不同的操作系统下用c++进行过多线程编程的朋友对那些线程处理 ...
- LightOJ 1326 – Race 第二类Stirling数/
简单的模板题. 题意:问n匹马出现的不同排名数. 题解:可以使用DP,本质上还是第二类Stirling数(隔板法) #include <stdio.h> #include <iost ...
- Bat 命令相关
1. bat 里面怎么sleep 等待: ping 127.0.0.1 -n 2000 > nul 2. net use 建立映射: net use Y: \\172.16.10.240\Inf ...
- 自定义View的实现流程
1.继承View组件,比如,LabelView继承了View 2.重写两个构造方法,比如,对于自定义View LabelView LabelView(Context context),如果该自 ...
- bzoj 3524 可持久化线段树
我们可以先离散化,然后建立权值的可持久化线段树,记录每个数出现的次数,对于区间询问直接判断左右儿子的cnt是不是大于(r-k+1)/2,然后递归到最后一层要是还是大于就有,否则不存在. 反思:挺简单一 ...
- 打开Android系统安装APK的页面
//使用隐式意图开启安装APK的Activity Intent intent = new Intent("android.intent.action.VIEW"); intent. ...
- CTF线下赛AWD模式下的生存技巧
作者:Veneno@Nu1L 稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 原文:https://www.anquanke.com/post/id/8467 ...
- 金融分析二:Matplotlib模板
Matplotlib:绘图和可视化 Matplotlib是一个强大的Python绘图和数据可视化的工具包. 安装方法:pip install matplotlib 引用方法:import matplo ...
- Linux 入门记录:二、Linux 文件系统基本结构
一.树状目录结构 Linux 文件系统是一个倒置的单根树状结构.文件系统的根为"/":文件名严格区分大小写:路径使用"/"分割(Windows 中使用" ...
- defconfig file 的 位置
Platform MSM8917 MSM8937 defconfig file position Android/kernel/msm-3.18/arch/arm/configs/