JavaScript学习总结(四)——逻辑OR运算符详解

转载自   JavaScript学习总结(四)——逻辑OR运算符详解

在JavaScript中,逻辑OR运算符用||表示

 var bTrue = true;var bFalse = false;var bResult = bTrue || bFalse;

下面的真值表描述了逻辑AND运算符的行为:  

运算数 1运算数 2结果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

在JavaScript中,0,"",false,null,undefined,NaN均表示false,

  可以用如下的代码证明:

<script type="text/javascript">var bFalse = false;//bool类型var strEmpty = "";//空字符串var iZero = 0;//数是0var oNull=null;//nullvar oUndefined;//undifinedvar oNaN=NaN;//NaN/*判断JavaScript 变量的 Boolean 值时,也可以使用逻辑 NOT 运算符。这样做需要在一行代码中使用两个 NOT 运算符。无论运算数是什么类型,第一个 NOT 运算符返回 Boolean 值。第二个 NOT 将对该 Boolean 值求负,从而给出变量真正的 Boolean 值。*/document.write("<PRE>");document.writeln("布尔数false的逻辑值是 " + (!!bFalse));document.writeln("空字符串(\"\")的逻辑值是 " + (!!strEmpty));document.writeln("数字0的逻辑值是 " + (!!iZero));document.writeln("NaN的逻辑值是 :" + (!!oNaN));document.writeln("null的逻辑值是 " + (!!oNull));document.writeln("undefined的逻辑值是 " + (!!oUndefined));document.write("</PRE>");</script>

运行结果:

  

  JavaScript的逻辑 OR 运算也是简便运算,对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值,逻辑||的运算规则如下:

  1. 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
  2. 如果两个运算数都是对象,返回第一个对象。
  3. 如果某个运算数是 null,返回 null。
  4. 如果某个运算数是 NaN,返回 NaN。
  5. 如果某个运算数是 undefined,发生错误。

  对于这些运算规则,没有必要死记硬背,因为在JavaScript中,可以使用逻辑Not运算符来判断JavaScript变量的Boolean值,判断的方式就是"!!变量名",例如:

 使用逻辑Not运算符来判断JavaScript变量的Boolean值

 

<script type="text/javascript">var bFalse = false;//运算数是bool类型的数var sRed = "red";//运算数是字符串var iZero = 0;//运算数是0var iThreeFourFive = 345;//运算数是 0 以外的任何数字var oObject = new Object();//对象var oNull=null;//运算数是nullvar oUndefined;//运算数是undifinedvar oNaN=parseInt("abc");//使用parseInt方法把尝试字符串abc转换成整数,因为abc不是数字,因此是转不了的,所以返回的结果就是NaN/*判断JavaScript 变量的 Boolean 值时,也可以使用逻辑 NOT 运算符。这样做需要在一行代码中使用两个 NOT 运算符。无论运算数是什么类型,第一个 NOT 运算符返回 Boolean 值。第二个 NOT 将对该 Boolean 值取反,从而给出变量真正的 Boolean 值。*/document.write("<PRE>");document.writeln("布尔数false 的逻辑值是 " + (!!bFalse));document.writeln("字符串sRed 的逻辑值是 " + (!!sRed));document.writeln("数字0 的逻辑值是 " + (!!iZero));document.writeln("数字345 的逻辑值是 " + (!!iThreeFourFive));document.writeln("对象Object 的逻辑值是 " + (!!oObject));document.writeln("NaN的逻辑值是 :" + (!!oNaN));document.writeln("null 的逻辑值是 " + (!!oNull));document.writeln("undefined 的逻辑值是 " + (!!oUndefined));document.write("</PRE>");</script>

判断结果:

  ​​

逻辑||运算符测试脚本:

<script type="text/javascript">document.write("<PRE>");/*JavaScript中的||将返回第一个不为false的那个值(对象亦可)或者最后一个值(如果全部都为false的话)*/var a=2;var b=90;var c=a||b;//在JavaScript中,非0的数字就代表true,0就代表falsedocument.writeln("a=2,b=90,c=a||b的结果是:"+c);//结果为2,返回第一个不为false的那个值,所以值是2var bFalse1=false;var bFalse2=false;var num=0;//0代表falsevar result=bFalse1||bFalse2||num;document.writeln("bFalse1=false,bFalse2=false,num=0,result=bFalse1||bFalse2||num的结果是:"+num);//如果全部都为false的话,返回最后一个值,因此结果是0/*如果一个运算数是对象,另一个是 Boolean 值,返回该对象。*/var obj = new Object();var bTrue=true;var bFalse=false;document.writeln("obj||bTrue的结果是:"+(obj||bTrue));//返回objectdocument.writeln("bTrue||obj的结果是:"+(bTrue||obj));//返回true,逻辑 OR 运算也是简便运算。对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数。document.writeln("obj||bFalse的结果是:"+(obj||bFalse));//返回objectdocument.writeln("bFalse||obj的结果是:"+(bFalse||obj));//返回object/*如果两个运算数都是对象,返回第一个对象*/var obj1 = new Object();var obj2 = new Object();document.writeln("obj1==(obj1||obj2)的结果是:"+(obj1==(obj1||obj2)));//结果为truedocument.writeln("obj2==(obj1||obj2)的结果是:"+(obj2==(obj1||obj2)));//结果为false/*如果某个运算数是 null,返回 null。*/var c=1;var d=null;document.writeln("d=null,null的布尔值是;"+(!!d));document.writeln("c=1,d=null,c||d的结果是:"+(c||d));document.writeln("c=1,d=null,d||c的结果是:"+(d||c));var o=new Object();document.writeln("o是一个对象,d=null,o||d的结果是:"+(o||d));//返回objectdocument.writeln("o是一个对象,d=null,d||o的结果是:"+(d||o));//返回objectvar zero=0;document.writeln("zero=0,d=null,zero||d的结果是:"+(zero||d));//返回nulldocument.writeln("zero=0,d=null,d||zero的结果是:"+(d||zero));//返回0var bTrue = true;var bResult = (bTrue || bUnknown);/*变量 bUnknown 是未定义的。不过,由于变量 bTrue 的值为 true,bUnknown 不会被计算,因此输出的是 "true"。*/document.writeln("bUnknown是未定义的一个变量,bResult = (bTrue || bUnknown)的结果是:"+bResult);//输出 "true"bFalse = false;bResult = (bFalse || bUnknown);    //发生错误document.writeln(bResult);            //不会执行这一行document.write("</PRE>");

运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 渐变蒙版_干货分享(第八期):PS蒙版教学,利用蒙版制造渐隐效果

哈喽&#xff0c;大家好&#xff0c;在下乔安生&#xff0c;之前已经跟大家说过图层蒙版的一个应用。今天再跟大家分享下&#xff0c;如何利用蒙版制造出渐隐的一个效果。利用图层蒙版 &#xff0c;为图像增加渐隐的感觉&#xff0c;然后利用画笔工具来修改图层蒙版以及改变图层…

ssh(Spring+Spring mvc+hibernate)——DeptController.java

/** * Title: DeptController.java * Package org.action * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-12-27 上午10:54:42 * version V1.0 */ package org.action;import java.util.List;import org.entity.Dept;…

Java Long类型处理精度丢失问题 传递给前端精度丢失

推荐统一处理 不需要单独处理了 package com.wochanye.ssc.portal.config; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.context.a…

ssh(Spring+Spring mvc+hibernate)——EmpController

/** * Title: DeptController.java * Package org.action * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-12-27 上午10:54:42 * version V1.0 */ package org.action;import java.text.SimpleDateFormat; import jav…

LEANSOFT领航员 – 基于Docker的DevOps实战培训

2016年&#xff0c;LEANSOFT推出了一系列广受开发人员欢迎的培训&#xff0c;包括《构建高效DevOps团队》&#xff0c;《基于Azure的容器化DevOps数据中心》和《Docker基础培训》。在这些培训中&#xff0c;我们得到了很多反馈&#xff0c;大家对使用Docker来支持DevOps的场景有…

高德地图路线规划 时间_路线准、播报拥堵及时,这次自驾出行高德地图可算是帮了大忙...

在我们日常生活中,自驾已经成为一种很普遍的出行方式,不仅在时间上灵活,特别是一家人出行也比较方便。伴随自驾出行的除了爱车外,一款靠谱的地图导航软件也成为了必不可少的旅行伙伴。目前比较常用的地图导航软件当属高德、百度和腾讯,不少人手机里都会有这三款软件中的其中一个…

JavaScript学习总结(七)——JavaScript函数(function)

转载自 JavaScript学习总结(七)——JavaScript函数(function) 一、函数基本概念 为完成某一功能的程序指令(语句)的集合&#xff0c;称为函数。 二、JavaScript函数的分类 1、自定义函数(我们自己编写的函数)&#xff0c;如&#xff1a;function funName(){} 2、系统函数(J…

ssh(Spring+Spring mvc+hibernate)——applicationContext-servlet.xml

<?xml version"1.0" encoding"UTF-8"?> <beansxmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.springframework.org/schema/p"xm…

JavaScript学习总结(八)——JavaScript数组

转载自 JavaScript学习总结(八)——JavaScript数组 JavaScript中的Array对象就是数组&#xff0c;首先是一个动态数组&#xff0c;无需预先制定大小&#xff0c;而且是一个像Java中数组、ArrayList、Hashtable等的超强综合体。 一、数组的声明 常规方式声明&#xff1a; 1、…

命令点无效怎么处理_CAD执行修改命令,你试过重复选择对象吗?

你在执行命令的时候&#xff0c;是习惯先选择对象还是之后才选择对象的呢&#xff1f;不知道细心的你有没有发觉&#xff0c;明明已经先选择对象了才执行命令&#xff0c;为什么之后还要重复选择对象&#xff1f;这里可以分几种情况来讨论一下。CAD版本&#xff1a;中望CAD 202…

gson转对象

gson转对象 Gson 中对象类型的相互转换 最近使用Gson来处理了json串&#xff0c;使用了一些常用的方法&#xff0c;为加深印象&#xff0c;因此记录下来 package JsonObjectDemo;import com.google.gson.*; import com.google.gson.reflect.TypeToken;import java.util.Array…

一起脱去小程序的外套和内衣 - 微信小程序架构解析

作者介绍&#xff1a; 渠宏伟&#xff0c;腾讯高级工程师&#xff0c;从事Web前端开发5年&#xff0c;先后负责企鹅电竞、腾讯视频VIP、腾讯OA开发框架、腾讯微信HR助手等项目。对Web前端架构、.NET架构有丰富的经验。 | 导语 微信小程序的公测掀起了学习小程序开发的浪潮&…

基数排序+速度测试

package com.atguigu.sort;import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class RadixSort {public static void main(String[] args) {//53, 3, 542, 748, 14, 214 // int …

ssh(Spring+Spring mvc+hibernate)——DeptServiceImpl.java

/** * Title: DeptServiceImpl.java * Package org.service.impl * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-11-21 上午10:08:50 * version V1.0 */ package org.service.impl;import java.io.Serializable; imp…

JavaScript学习总结(九)——Javascript面向(基于)对象编程

转载自 JavaScript学习总结(九)——Javascript面向(基于)对象编程 一、澄清概念 1.JS中"基于对象面向对象" 2.JS中没有类(Class)&#xff0c;但是它取了一个新的名字叫“原型对象”&#xff0c;因此"类原型对象" 二、类(原型对象)和对象(实例)的区别与联…

杭州驾照驾驶证更换

1.去杭州市和睦医院体检 体检费15元 做个测试眼睛度数的 2.去杭州车管所 换证 排队大约20分钟 要带一张白底照片 也可以现场有自助拍照的 弄好之后大约再等 20分钟 可以拿到证件 其他 可以去xx邮政的 不过不是现场拿证 要过7个工作日 会邮寄过来

ssh(Spring+Spring mvc+hibernate)——EmpServiceImpl.java

/** * Title: EmpServiceImpl.java * Package org.service.impl * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-11-21 上午10:19:41 * version V1.0 */ package org.service.impl;import java.io.Serializable; impo…

将Springboot项目放在服务器上一直运行

nohup java -jar hz-sms-0.0.1-SNAPSHOT.jar >/www/wwwroot/...-0.0.1-SNAPSHOT.out 2>&1 &

迁移数据库到SQL on Linux Docker

问题引入 前一篇文章&#xff0c;菜鸟找到了SQL on Linux Docker容器销毁后&#xff0c;容器中的数据库文件可以得以保留的方法&#xff0c;老鸟非常开心。所以&#xff0c;今天又提出了新的问题&#xff1a;“鸟儿&#xff0c;如果我想把我的数据库从SQL on Windows迁移到SQL …