JS-逻辑运算符的与,或,非

1.非

所谓非,就是取反,非真即假,非假即真。

非运算符不仅仅只能用于布尔值,其他数据类型也是可以的,如下:

1.如果操作数是一个对象,返回false

2.如果操作数是一个空字符串,返回true

3.如果操作数是一个非空字符串,返回false

4.如果操作数是数值0,返回true

5.如果操作数是任意非0数值(包括Infinity), 返回false

6.如果操作数是null,返回true

7.如果操作数是NaN,返回true

8.如果操作数是undefined, 返回true

2.与

作用于两到多个值,并且只有所有的操作数都是真值时,才为true。

JavaScript里面的与存在短路现象,具体说明如下:

1.第一个操作数为真:会进入第二个操作数的判断,且无论第二个操作数真假,都会返回第二个操作数。

2.第一个操作数为假:不会进入第二个操作数的判断,直接返回第一个操作数。

实例:

  1. console.log(3 && 5);//
  2.  
  3. console.log("Hello" && 20);//
  4.  
  5. console.log("Hello" && false);//false
  6.  
  7. console.log("" && "shoe");//""
  8.  
  9. console.log("Hello" && '');//''

经典题:

  1. let a = true;
  2.  
  3. let b = a && c;//因为a是true,所以会判断第二个数。
  4.  
  5. console.log(b); //ReferenceError: c is not defined
  6.  
  7. let a = false;
  8.  
  9. let b = a && c;// 因为a是false,所以不会判断第二个数。
  10.  
  11. console.log(b);//false

3.或

同样是作用于两到多个值,但是只要有一个操作数为真,就返回真。

JavaScript里面的或同样存在短路现象,具体说明如下:

1.如果第一个操作数为真,则不会进入第二个数的判断。所以无论第二个操作数真假,都直接返回第一个操作数

2.如果第一个操作数为假,则会进入第二个数的判断。但是无论第二个操作数真假,都直接返回第二个操作数

实例:

  1. console.log(false || true);//true
  2.  
  3. console.log("Hello" || "");//Hello
  4.  
  5. console.log("Hello" || "str");//Hello
  6.  
  7. console.log(NaN || "");//""
  8.  
  9. console.log(0 || "Hello World");//Hello World
  10.  
  11. console.log('' || 'str');//str
  12.  
  13. console.log('' || false);//false

经典题:

  1. let a = false;
  2.  
  3. let b = a || c;因为afalse,所以会判断第二个数。
  4.  
  5. console.log(b); //ReferenceError: c is not defined
  6.  
  7. let a = true;
  8.  
  9. let b = a && c;// 因为a是true,所以不会判断第二个数。
  10.  
  11. console.log(b);//true

JS-逻辑运算符的与,或,非的更多相关文章

  1. js 控制Div循环显示 非插件版

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  3. JS逻辑运算符&&与||的妙用

    JS逻辑运算符&&与||的妙用   /* 文章写的不错 就此分享 */ &&中第一个表达式为假就不会去处理第二个表达式,直接放回结果. || 中就刚很好相反.如果第一个 ...

  4. node.js运行配置(vs code非控制台输出)

    node.js运行配置(vs code非控制台输出) node  配置 简化  vs code 是非常强大的编译器,皆因它有有各种各样好用的插件. 在没有安装code runner插件之前,想要执行n ...

  5. JS逻辑运算符&&与||的短路运算

    最近看到一个360面试题,题目如下: 下面代码的输出值是? alert(1&&2); 正确的结果是 2. 1.后来仔细研究了一下JS逻辑运算的相关内容,在MDN上面找到相应描述: 下面 ...

  6. js在IE浏览器和非IE浏览器中的兼容性问题

    下面列出IE和非IE中常见的一些js兼容性问题.  //window.event   IE:有window.event对象   非IE:没有window.event对象.可以通过给函数的参数传递eve ...

  7. 基于 Vue.js 之 iView UI 框架非工程化实践记要

    像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引用一下,不需要就删除.故观念使然,尽管 Nuget 和 Maven ...

  8. js 逻辑运算符优化

    运算符的代码优化,可以精简代码,提高代码可读性 下面主要讨论下逻辑运算符与 &&, 或||. 示例: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭 ...

  9. 优化:js 逻辑运算符优化

    运算符的代码优化,可以精简代码,提高代码可读性 下面主要讨论下逻辑运算符与 &&, 或||. 示例: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭 ...

  10. JS在严格模式和非严格模式的区别

    若想在严格模式下使用JS,需要在文件的第一行加上“use strict”,在实际开发中,常常将“use strict”加入到闭包的内部 具体是: 整个脚本中使用:在这个JavaScript文件开头写' ...

随机推荐

  1. js函数节流和防抖的理解与实现

    一:函数防抖1.理解:触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间2.思路:每次触发事件时都取消之前的延时调用方法 3.实现: function debounce ...

  2. OpenCV画图(画OpenCV的标志)

    import numpy as np import cv2 img = np.ones((512, 512, 3), np.uint8)*255 # 画椭圆 # 图片 (圆心) (短轴长,长轴长),旋 ...

  3. 使用 DrMemory 详细教程

    Dr Memory 简介 Dr. Memory 是一个开源免费的内存检测工具,它能够及时发现内存相关的编程错误,比如未初始化访问.内存非法访问以及内存泄露等.它不仅能够在 Linux 下面工作,也能在 ...

  4. 高可用安装k8s1.13.0 --不能带cavisor、不能加cni ,带上这两个总是报错,kubelet无法启动

    高可用安装k8s1.13.0 --不能带cavisor,总是报错,kubelet无法启动

  5. Mac 常用配置(JDK切换,ll命令设置)

    打开 /Users/用户/.bash_profile文件 1.JDK切换,添加如下内容 export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6` # 设置 ...

  6. 【JulyEdu-Python基础】第 7 课:Python并发编程以及系统常用模块

    主要内容 Python多进程与多线程 Python使用Hadoop分布式计算库mrjob Python使用Spark分布式计算库PySpark 例子:分别使用MapReduce和Spark实现word ...

  7. GAN(生成对抗网络)之keras实践

    GAN由论文<Ian Goodfellow et al., “Generative Adversarial Networks,” arXiv (2014)>提出. GAN与VAEs的区别 ...

  8. 【并行计算-CUDA开发】CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解

    GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm. sp: 最基本的处理单元,streaming processor  最 ...

  9. 阅读《C Primer Plus》收获

    190927 知识内容: 1.了解到C语言混乱代码大赛.评选谁的程序最有创意但又让人难以理解 2.了解最初的c语言的规则,所有编译器依照规则而设计. 3.编程前先要确定好目标对象,并且在纸上大概写出流 ...

  10. [目标检测] 从 R-CNN 到 Faster R-CNN

    R-CNN 创新点 经典的目标检测算法使用滑动窗法依次判断所有可能的区域,提取人工设定的特征(HOG,SIFT).本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上用深度网络提取特征, ...