关于null == 0?返回false的问题

1.首先我们先看各种情况的结果:

  

null > 0? //=>false
null < 0? //=>false
null >= 0?  //=>true
null <= 0?  //=>true

由以上四种情况我们很容易推出 null == 0?的结果,什么呢?true?false?  其实答案为false,为什么?

1.首先null > 0; 和 null < 0; 的结果是将null转换为数字0来进行的比较判断;

  而判断null >= 0;时是靠null < 0 为false来判断的,如果 null < 0为fasle,则null > 0为true,所以null >= 0为true。

  反之,null  <= 0;为true同理。

2.但判断null == 0时,尽管 等号右端为数字,但null并未进行数值转换,所以此时,null为对象(空对象,无任何属性和方法),而0位Number类型,比较结果自然是false了。

参考链接:http://www.jb51.net/article/41421.htm

时间: 2024-08-07 21:18:59

关于null == 0?返回false的问题的相关文章

android在view.requestFocus(0)返回false的解决办法

我们有时候想让listview的第一行自动获取到焦点,我们就会使用view.requestFocus(0)来操作,而有时候并不生效,debug后显示rerurn为false. 这是因为我们获取焦点太早,listview控件还为加载完毕.可以尝试一下方法解决: listview.post(new Runnable(){ @Override public void run(){ view.requestFocus(0); } }); ok,问题解决! android在view.requestFocu

区分JS中的undefined,null,&quot;&quot;,0和false

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库 字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和 不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boole

javascript中的undefined,null,&quot;&quot;,0和false的云集

在各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boolean值本身就是tru

php 0,null,empty,空,false,字符串关系(转)

在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下: //相等判断 '' == NULL == 0 == false (相等)array() = 0 == NULL == false (相等)array() <> '' (不相等) //恒等判断//任何两个数比较都不恒等 var_dump(false == FALSE); //bool(true)var_dump(false === FALSE); //bool(t

0,null,empty,空,false,isset

<?php header("Content-type: text/html; charset=utf-8"); $a=0; //1. if($a==0) { echo $a; }else { echo "不等0"; } echo "<hr>"; //2.变量$a等0不为真 if($a) { echo $a; }else { echo "不等0"; } echo "<hr>";

php踩过的那些坑(4) false,NULL,0,&#39;&#39;详解

一.前方有坑 php开发过程中,难免会遇到这四个值:false,null,0,'',并且也会对这四个值进行比较,然后分别进行业务代码处理.一招不慎,就会踩到坑,影响数据判断的正确性和安全性,以至于造成代码不健壮,给程序的测试和运行造成很多的麻烦. 看如下代码: $a = NULL; $b = ''; $c = 0; $d = false; echo ($a == $b)?1:0; // 输出1 echo ($a === $b)?1:0; // 输出0 echo ($a == $c)?1:0; /

vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效解决方法

我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传. 项目中用的element-ui是V1.4.3 <el-upload class="upload-demo" drag ref="fileUpload" :action="urls.fileUpload" :on-success="handleUploadSuccess" :on-error=

[转载] 在java中为什么变量1000 = 1000 返回false,但是100=100返回true?

ps:题目的意思是指定义相同内容的不同变量之间的==比较.如果直接比较(1000 == 1000)的结果是true. 运行以下代码: Integer a = 1000, b = 1000; System.out.println(a == b); Integer c = 100, d = 100; System.out.println(c == d); 结果是: false true 我们知道,如果两个引用指向不同的对象,即使对象拥有相同的内容时,他们用==比较的结果就是不相等(返回false).

SetupDiEnumDeviceInterfaces返回false WIN7/WIN8

The SetupDiEnumDeviceInterfaces function enumerates the device interfaces that are contained in a device information set. BOOL SetupDiEnumDeviceInterfaces( _In_      HDEVINFO DeviceInfoSet, _In_opt_  PSP_DEVINFO_DATA DeviceInfoData, _In_      const G