首页 新闻 会员 周边 捐助

关于JS中false类型转换判断的问题

0
悬赏园豆:50 [已解决问题] 解决于 2016-09-12 16:25
console.log(null == NaN);  //false
console.log(null == undefined); //true
console.log(null == false); //false
console.log(null == ""); //false
console.log(null == ''); //false
console.log(null == 0); //false

console.log(false == NaN); //false
console.log(false == undefined); //false
console.log(false == null); //false
console.log(false == ""); //true
console.log(false == ''); //true
console.log(false == 0); //true

按理来说,这些不是都可以互相转换的吗?为什么会出现这种情况,里面的原理谁能帮忙解释一下。谢谢。
刘冰0117的主页 刘冰0117 | 初学一级 | 园豆:102
提问于:2016-09-11 11:42
< >
分享
最佳答案
1

大概有以下这些情况:

1. 空字符串,0,NaN,null,undefined 都会转换为 false

2. 只有 null == undefined,和其它的都不相等

3. 空数组在判断的时候会转换为 true,但是 [] == 0,[] == false,[] == ''

4. NaN 和任何东西都不相等,包括它自己:NaN !== NaN

收获园豆:50
by.Genesis | 老鸟四级 |园豆:2824 | 2016-09-12 10:40
其他回答(4)
0

NaN 属性是代表非数字值的特殊值,isNaN() 全局函数来判断一个值是否是 NaN 值。

undefined一个特殊值,通常用于指示变量尚未赋值,类似于null

js中0,'',"",都有false的意思

[3] | 园豆:1174 (小虾三级) | 2016-09-11 13:31
0

""

null

undefined

0

当判断条件时都是false

小小高 | 园豆:1307 (小虾三级) | 2016-09-12 09:31
0

看看 javascrpt 高级编程这本电子书吧。

Постой! | 园豆:1084 (小虾三级) | 2016-09-12 10:22
0

你说的互相转换是什么意思?

顾晓北 | 园豆:10898 (专家六级) | 2016-09-12 10:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册