关于JS的逻辑运算符 与 或|| 非!
1、逻辑与(&&)
(1)对于布尔值,只有都为true才返回true;
(2)对于不是布尔值的情况则:
如果第一个操作数是对象,则返回第二个数
eg:var str = new Array();
console.log(str&&8);//返回值为8
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象。
如果第两个操作数都是对象,则返回第二个数操作数。
如果有一个操作数是null,则返回null。
eg: console.log(8&&null);//返回结果为null
如果有一个操作数是NaN,则返回第NaN。
如果第一个操作数是undefined,则返回undefined。
2.逻辑或(||)
(1)对于布尔值,逻辑或是非常简单的,只要有一个true,就返回true;
(2)对于不是布尔值的情况则:
- 如果第一个操作数是对象,则返第一个操作数
- 如果第一个操作数的求值结果为false,则返回第二个操作数
- 如果两个操作数都是对象,则返回第一个操作数
- 如果两个操作数是null,则返回null
- 如果两个操作数是NaN,则返回NaN
- 如果两个操作数是undefined,则返回undefined
3.逻辑非(!)
- 如果一个操作数是一个对象,返回false;
- 如果一个操作数是一个空字符串,返回false;
- 如果一个操作数是一个非空字符串,返回false
- 如果一个操作数是一个数值0,返回true;
- 如果一个操作数是任意的非零字符,返回false;
- 如果一个操作数是null,返回true;
- 如果一个操作数是NaN,返回true;
- 如果一个操作数是undefined,返回true;
注:逻辑与,逻辑非都是从左向右判断,谁的第一个逻辑判断为true就显示谁,只不过逻辑非必须两个都为true,而且谁是第一个false就显示谁。
if(obj!=null && obj.length >0){//防止空指针异常alert
}
Java中要判断字符串是否为空或者对象是否为null
但js中会自行判断 可以简化书写
if(obj){//防止空指针异常alert(111)
}
while(true){//死循环,当括号内不为true时,类型转换,非空、数字非0则为true,字符串也为true
alert(111)
}
逻辑运算符
逻辑运算符用于判定变量或值之间的逻辑。我们给定 x = 6 且 y = 3,下表解释了逻辑运算符:
运算符 | 描述 | 例子 |
---|---|---|
&& | 与 | (x < 10 && y > 1) 为 true |
|| | 或 | (x == 5 |
! | 非 | !(x == y) 为 true |
关于JS的逻辑运算符 与 或|| 非!相关推荐
- 前端图片压缩上传(纯js的质量压缩,非长宽压缩)
前端图片压缩上传(纯js的质量压缩,非长宽压缩) 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需求更改. demo源码如下: <!DOCTYPE html> ...
- 逻辑运算符与或非(基础学习)
逻辑运算符与或非 "!"(逻辑非)."&&"(逻辑与)."||"(逻辑或)是三种逻辑运算符. 逻辑运算一般用于连接多个关系, ...
- 【JS】逻辑运算符 非! 与 或||(处理对象时注意)
转自:https://www.cnblogs.com/linxiong945/p/4135554.html JS中的逻辑运算符在处理布尔值的判断时,和其他语言没有什么不同,不过在处理对象时,就需要好好 ...
- 创业笔记-Node.js入门之阻塞与非阻塞
阻塞与非阻塞 正如此前所提到的,当在请求处理程序中包括非阻塞操作时就会出问题.但是,在说这之前,我们先来看看什么是阻塞操作. 我不想去解释"阻塞"和"非阻塞"的 ...
- 【cocos2d-x从c++到js】22:使用非侵入方式扩展UI系统接口的举例
如何较好的运用脚本语言,使用他的动态性是关键.使用动态性来扩展代码,可以保证非侵入方式.这种方式,把原先的引擎代码和当前自己的二次开发代码隔离开了,便于后续的升级维护.而且,又不像继承那么重量级. 下 ...
- 一分钟搞懂逻辑运算符(并且) , |(或者) , !(非) , ^(异或) , (短路与) , ||(短路或)之间的关系
逻辑运算符 逻辑功能 示例 &(并且) 有false则false 1 |(或者) 有true则true. 2 !(非) 非false则true,非true则false. 3 ^(异或) 相同为 ...
- js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝
一.一个简单的js方法实现集合拷贝 做web项目的时候,少不了和js中的数组,集合等对象接触,那么你肯定会发现,在js中存在一个怪异的现象就是数组和集合的拷贝都是地址复制,并不是简单的数据的拷贝. 举 ...
- JS 仿淘宝幻灯片 非完整版 小案例
仿淘宝幻灯片,基础版,后期效果是要做到每次点击小圆点,切换都无缝 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 2 ...
- js验证不完全收录(非空,中英逗号,字数限制,特殊字符,密码,用户名,手机号)
例: 页面文本域标签 <textarea name="contents" id="fffff" ></textarea> var c ...
最新文章
- linux防火墙cc,Linux防火墙后面的Alljoyn服务(iptables)
- Socket IO与NIO(二)
- 深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建
- android 音乐播放器中播放模式的设计
- ssh 与 telnet 有何不同?_Secure Shell(SSH)介绍
- 禁用一个计算机用户,系统小技巧:Windows 10账户删除 禁用与启用
- listen函数的第二个参数_JavaScript数组构造from函数
- 图像处理——傅里叶变换
- Docker中未指定挂载点容器间volume卷的数据共享
- Bomb(hdu 3555)
- 保存验证码的方法_selenium自动化测试:6.验证码处理
- Spring 配置文件
- c语言中dot作用,编程小组功能介绍及使用说明
- 【干货】Vray渲染器的使用方法
- 服务器虚拟化的重要性,服务器虚拟化:虚拟机迁移的重要性
- 池化层MaxPool函数详解及反向传播的公式推导
- 公益/广告-bloggerads广告是为了钱?[非推广文章哈]
- 实现点击图标使界面回到顶部
- 亚马逊云AWS MQTTS 证书使用说明
- python 制作数据图表_python制作各种数据图表
热门文章
- 深度学习论文--Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- 小型步进电机驱动芯片的应用和介绍如HR8833
- mysql replace用法
- Ubuntu下的Kitematic安装启动出现无法使用的问题
- 华为手机恢复出厂设置出现com.android.phone,华为手机恢复出厂设置后怎么还原【图文】...
- 关于合并apk和odex的实践
- 困扰许久的Kafka Rebalance问题
- 网络爬虫(动态网页爬取关于混合动力汽车的论文数据)
- VMware、CentOS、XShell、Xftp的安装
- chainer-图像分类-MobilenetV1【附源码】