JavaScript中 0==null为何是false
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中 0==null为何是false相关的知识,希望对你有一定的参考价值。
“123”在在算式中能隐形转换为123,所以123==“123”表现为真(true);
true在在算式中能隐形转换为1,所以1==true表现为真(true);
而null在算式中能隐形转换为0,但0==null却表现为假(false),
这是怎么回事,为何0==null表现为false?
2、当不同类型比较时,先把类型转换成同一个类型,然后再执行严格相等,比如2 == true,结果是false,这个等同于 2 === Number(true),也就是2 === 1
3、至于你这个 0==null,比较特殊,null、undefined与其他类型的值比较时,结果都为false,除了自身比较是true,比如null == null ,null == undefined ,undefined == undefined,都是true 参考技术B Null是没有值,0是有值的(只不过值为0),所以严格来讲是FALSE也不奇怪追问
null确实是没有值,但为何null能在隐式转换中能转换出0?
追答这个就属于javascript语言设计问题了,对我们这些使用者来说不用纠结这个,应用时注意这些特殊情况,不要让它影响程序的运行就行了。
追问在这种逻辑下理解比较符号时,
除了这些之外,还发现一些如:
alert(NaN=="") ->false
alert(undefined==NaN); ->false
alert(undefined==undefined); ->true
等等
不知道这个对比符号该如何理解?
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较。
undefined 属性用于存放 JavaScript 的 undefined 值。只能用 === 运算来测试某个值是否是未定义的,因为 == 运算符认为 undefined 值等价于 null。null 表示无值,而 undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。
W3School的解释及示例如下:
NaN:http://www.w3school.com.cn/jsref/jsref_nan_number.asp
undefined:http://www.w3school.com.cn/jsref/jsref_undefined.asp
你得注意JavaScript本身的语言特点以及相应的规范,不能自以为是。
本人小白,刚入门JavaScript,在麦子学院看到那些逻辑漏洞百出的视频之后,想在其他地方了解这些比较符号,但一直找不到这些符号的理解方法,请问你是怎么记和理解这些比较符号的?
参考技术C 0肯定跟null不一样啊,0转换为数值,是有值的,只不过值为0,而null是空,0和空可不一样。追问按你逻辑来说,true也不是一个值,但为何true==1会表现为真呢
追答因为1转换成布尔类型就是true啊,你再试0==false 返回也是true
追问要是这样的话,我null转换成布尔类型是false,0转换成布尔类型也是false,那为什么他们对比为false呢?
追答那你不能这么比较啊,String a="abc";String b ="abc";但是a就是不等于b。分配的内存就不一样。
追问那我换种说法,undefined==null返回true,这两个应该都不能互相转换吧?为何会是true呢
追答如果你要严格对比,就用===
javascript JavaScript中对象的深层副本
以上是关于JavaScript中 0==null为何是false的主要内容,如果未能解决你的问题,请参考以下文章