javascript 中的 true 或 false
JavaScript中奇葩的假值
通常在以下语句结构中需要判断真假
- if分支语句
- while循环语句
- for里的第二个语句
如
1
2
3
4
5
6
7
if (boo) {
// do something
}
while (boo) {
// do something
}
JavaScript中有 6 个值为“假”,这六个值是
- false
- null
- undefined
- 0
- '' (空字符串)
- NaN
这里面 false 本身是布尔类型,其它 5 个则不是。
除了这 6 个外,其它均为“真” ,包括对象、数组、正则、函数等。注意 '0'、'null'、'false'、{}、[]也都是真值 。
虽然这六个值都为“假”,它们之间并非都相等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
console.log( false == null ) // false
console.log( false == undefined ) // false
console.log( false == 0 ) // true
console.log( false == '' ) // true
console.log( false == NaN ) // false
console.log( null == undefined ) // true
console.log( null == 0 ) // false
console.log( null == '' ) // false
console.log( null == NaN ) // false
console.log( undefined == 0) // false
console.log( undefined == '') // false
console.log( undefined == NaN) // false
console.log( 0 == '' ) // true
console.log( 0 == NaN ) // false
对于“==”,以上得出下列结论
- false 除了和自身比较为 true 外,和 0,"" 比较也为 true
- null 只和 undefined 比较时为 true, 反过来 undefined 也仅和 null 比较为 true,没有第二个
- 0 除了和 false 比较为 true,还有空字符串 ''" 和空数组 []
- 空字符串 '' 除了和 false 比较为 true,还有一个数字 0
当然,对于这一切,查看下规范是最踏实的,ES里的ToBoolean阐述了所有情形

相关:
javascript 中的 true 或 false的更多相关文章
- javascript中的true和false
今天遇到一个问题,执行下面的代码返回true还是false?请说明理由 console.log([] == ![]) 在浏览器中运行了一下,发现结果是true.为什么会这样呢?于是查找了相关的资料. ...
- 支付宝支付后回调通知中responseTxt=true isSign=False可能的问题
在做支付宝的二维码扫码支付功能,生成二维码成功,扫描后也能付款,付款后也能回调通知到我的页面,但是验证签名的时候出错,找了好久终于找到是什么原因: 引用 1. 用的RSA签名验证,默认密钥纯字符,并不 ...
- Python3中真真假假True、False、None等含义详解
概述 在Python中,不仅仅和类C一样的真假类似,比如1代表真,0代表假.Python中的真假有着更加广阔的含义范围,Python会把所有的空数据结构视为假,比如[](空列表).{}(空集合).'' ...
- python中的True和False
返回真假时,需要为: return True return False
- JavaScript中 return; 、return false; 与return true的区别
工作中有时候用到 return; ,有时候用到 return false; 还有时候会用到 return true; 这三个到底是什么区别?为什么一会这个一会又那个! 1.先看下return ...
- JavaScript中的 true
经常看到有人写 如下代码,有时候也是凭经验猜想到底是什么意思,本着认真学习 JavaScript 的精神,专门写一篇去讨论这个问题. if(name){ //do something. }else{ ...
- javascript中几种为false的值
如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值.转换规则是除了下面六个值被转为false,其他值都视为true. undefined null false 0 ...
- jquery中 cache: true和false的区别
true:会读缓存,可能真的到服务器上. 假如上次访问了a.html,第二次的时候得到的是上次访问的a.html的结果,而不是重新到服务器获取. false:会在url后面加一个时间缀,让它跑到服务器 ...
- if判断中的true和false
真值指的是在 布尔值 上下文中转换后(使用强制类型转换)的值为真的值.所有值都是真值,除非它们被定义为 falsy (即除了 false,0,"",null,undefined 和 ...
随机推荐
- ubuntu 安装eclipse,adt,android sdk,离线
1.安装jdk 环境变量 $ sudo gedit ~/.bashrc export JAVA_HOME=/usr/local/jdk1.8.0_65export JRE_HOME=${JAVA_HO ...
- reg.test is not a function 报错
正则中 比如 var reg = "/^[0-9]$/" 会报 reg.test is not a function 如果 var reg = /^[0-9]$/ 就不会有错 因为 ...
- 从零搭建mongo分片集群的简洁方法
一.目录 1.mongo路径,config数据路径,shard数据路径
- 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take
Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...
- start with connect by prior 递归查询用法
这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: create table a_test ( parentid ), sub ...
- Hash哈希类型
hash类型是使用得非常非常多的一种redis数据类型,相当于C#中的Dictionary和Hashtable. hset命令(语法:hset key field value)将哈希表key中的fie ...
- require.js基本认识
基本API require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短 define 从名字就可以看出 ...
- SparkSQL之旅
1.准备数据employee.txt ,Gong Shaocheng, ,Li Dachao, ,Qiu Xin, ,Cheng Jiangzhong, ,Wo Binggang, 将数据放入hdfs ...
- O365 "打开或关闭脚本"功能
博客地址:http://blog.csdn.net/FoxDave 自定义功能是 SharePoint Online 最具吸引力的功能之一,因为它使管理员和用户可以调整网站和页面的外观以满足组织目 ...
- [Python模式]策略模式
策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换.此模式让算法的变化独立于使用算法的客户. 作为动态语言,Python实现策略模式非常容易,只要所有算法提供相同的函数即可. import ...