JS-逻辑运算符的与,或,非
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.第一个操作数为假:不会进入第二个操作数的判断,直接返回第一个操作数。
实例:
console.log(3 && 5);//
console.log("Hello" && 20);//
console.log("Hello" && false);//false
console.log("" && "shoe");//""
console.log("Hello" && '');//''
经典题:
let a = true; let b = a && c;//因为a是true,所以会判断第二个数。 console.log(b); //ReferenceError: c is not defined let a = false; let b = a && c;// 因为a是false,所以不会判断第二个数。 console.log(b);//false
3.或
同样是作用于两到多个值,但是只要有一个操作数为真,就返回真。
JavaScript里面的或同样存在短路现象,具体说明如下:
1.如果第一个操作数为真,则不会进入第二个数的判断。所以无论第二个操作数真假,都直接返回第一个操作数
2.如果第一个操作数为假,则会进入第二个数的判断。但是无论第二个操作数真假,都直接返回第二个操作数
实例:
console.log(false || true);//true
console.log("Hello" || "");//Hello
console.log("Hello" || "str");//Hello
console.log(NaN || "");//""
console.log(0 || "Hello World");//Hello World
console.log('' || 'str');//str
console.log('' || false);//false
经典题:
let a = false; let b = a || c;因为a是false,所以会判断第二个数。 console.log(b); //ReferenceError: c is not defined let a = true; let b = a && c;// 因为a是true,所以不会判断第二个数。 console.log(b);//true
JS-逻辑运算符的与,或,非的更多相关文章
- js 控制Div循环显示 非插件版
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 基于 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 时代,包括其插件在需要时就引 ...
- JS逻辑运算符&&与||的妙用
JS逻辑运算符&&与||的妙用 /* 文章写的不错 就此分享 */ &&中第一个表达式为假就不会去处理第二个表达式,直接放回结果. || 中就刚很好相反.如果第一个 ...
- node.js运行配置(vs code非控制台输出)
node.js运行配置(vs code非控制台输出) node 配置 简化 vs code 是非常强大的编译器,皆因它有有各种各样好用的插件. 在没有安装code runner插件之前,想要执行n ...
- JS逻辑运算符&&与||的短路运算
最近看到一个360面试题,题目如下: 下面代码的输出值是? alert(1&&2); 正确的结果是 2. 1.后来仔细研究了一下JS逻辑运算的相关内容,在MDN上面找到相应描述: 下面 ...
- js在IE浏览器和非IE浏览器中的兼容性问题
下面列出IE和非IE中常见的一些js兼容性问题. //window.event IE:有window.event对象 非IE:没有window.event对象.可以通过给函数的参数传递eve ...
- 基于 Vue.js 之 iView UI 框架非工程化实践记要
像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引用一下,不需要就删除.故观念使然,尽管 Nuget 和 Maven ...
- js 逻辑运算符优化
运算符的代码优化,可以精简代码,提高代码可读性 下面主要讨论下逻辑运算符与 &&, 或||. 示例: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭 ...
- 优化:js 逻辑运算符优化
运算符的代码优化,可以精简代码,提高代码可读性 下面主要讨论下逻辑运算符与 &&, 或||. 示例: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭 ...
- JS在严格模式和非严格模式的区别
若想在严格模式下使用JS,需要在文件的第一行加上“use strict”,在实际开发中,常常将“use strict”加入到闭包的内部 具体是: 整个脚本中使用:在这个JavaScript文件开头写' ...
随机推荐
- 配置了configuration.xml之后提示找不到映射关系
在启动类里面单独增加一个Bean即可解决 @Bean public DatabaseIdProvider getDatabaseIdProvider(){ DatabaseIdProvider dat ...
- wdScrollTab
wdScrollTab是一个采用jQuery实现的Tab面板,当标签太多超出页面时会自动滚动.支持iframe.ajax调用和动态加载内容.
- c++ 调试信息输出
1. 把打印信息输出到指定的文件里. #include <stdio.h> #include <stdlib.h> freopen("log.txt", & ...
- 两表拼接 pd.concat
a = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]],columns=['a','b','c']) b = pd.DataFrame([[11,23,45], [2 ...
- Cowpatty 破解WPA-PSK加密
一:使用wireshark 嗅探类工具打开之前抓的cpp中包含WPA握手的cap 文件,使用语法 eapol 进行过滤,可以看到抓取的Key数据 将其另存为保存到一个目录下. 二:而后就使用Cowp ...
- 【VS开发】关于线程安全一些细节体会
[VS开发]关于线程安全一些细节体会 标签(空格分隔): [VS开发] 利用C++进行GUI界面开发,最大的问题往往是多线程安全问题,由于C++不具备收集内存垃圾的功能,所以必须由程序员负责维护,因此 ...
- 【FFMPEG】谈谈RTP传输中的负载类型和时间戳
谈谈RTP传输中的负载类型和时间戳 最近被RTP的负载类型和时间戳搞郁闷了,一个问题调试了近一周,终于圆满解决,回头看看,发现其实主要原因还是自己没有真正地搞清楚RTP协议中负载类型和时间戳的含义.虽 ...
- udb主从不同步排错
Last_SQL_Errno:1032Last_SQL_Error:Could not execute Update_rows event on table oride_data.data_syste ...
- gRPC 本地服务搭建
RPC RPC 原理 主流 RPC 框架 gRPC 概述 特点 服务端创建 定义服务 生成 gRPC 代码 服务端实现 客户端实现 踩坑记录 源码 RPC RPC 原理 RPC 框架的目标就是让远程服 ...
- SQL Server解惑——为什么你的查询结果超出了查询时间范围
原文:SQL Server解惑--为什么你的查询结果超出了查询时间范围 废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇 ...