zoukankan      html  css  js  c++  java
  • 区分js中的null,undefined,"",0和false

          console.log(typeof null);//object
            console.log(typeof undefined);//undefined
            console.log(typeof "");//string
            console.log(typeof 0);//number
            console.log(typeof false);//boolean

    在程序语言定义的各种各样的数据类型中,我们都会为其定义“空值”或“假值”,我们在标题里已经列出了js中的所有空值和假值,出来boolean本身就是true和false两种情况外,其他数据类型的空值无非是undefined和defined两类,如上代码。

    alert(0 == ''); //true
    alert(0 == false); //true
    alert(false == ''); //true
    alert(null == undefined); //true
    
    alert(!0); //true
    alert(!false); //true
    alert(!undefined); //true
    alert(!null); //true
    alert(!''); //true
    
    alert(0 == undefined); //false
    alert(0 == null); //false
    alert(false == null); //false
    alert(false == undefined);//false
    alert('' == null); //false
    alert('' == undefined); //false

    这五个值的共同点是,在if语句中做判断,都会执行false分支。当然从广义上来看,是说明这些数值都是其对应数据类型上的无效值或空值。还有这五个值作!运算,结果全为:true。

        这几个值中也有不同,其中undefined和null比较特殊,虽然null的类型是object,但是null不具有任何对象的特性,就是说我们并不能执行null.toString()、null.constructor等对象实例的默认调用。所以从这个意义上来说,null和undefined有最大的相似性。看看null == undefined的结果(true)也就更加能说明这点。不过相似归相似,还是有区别的,就是和数字运算时,10 + null结果为:10;10 + undefined结果为:NaN。

        另外""、0和false虽然在if语句表现为"假值",可它们都是有意义数据,只是被作为了"空值"或"假值",因为:"".toString(),(0).toString()和false.toString()都是合法的可执行表达式。

    其他的NAN也可以近似看做是一个空值或假值,因为任何类型的值与NAN做比较得到的都是false,包括NAN本身。

    typeof的返回值类型是字符串

  • 相关阅读:
    vector容器(一)
    螺旋数组实现
    zigzag数组实现
    HDU 1496
    HDU 1381 Crazy Search
    什么叫软核,固核,硬核?
    “杜拉拉思维模式”之六:小组面试提升术
    硬件工程师电路设计必须紧记的十大要点
    面试的“群殴”宝典
    三段式状态机 [CPLD/FPGA]
  • 原文地址:https://www.cnblogs.com/aniu-caili/p/9453708.html
Copyright © 2011-2022 走看看