JavaScript 基本类型值-Undefined、Null、Boolean

▓▓▓▓▓▓ 大致介绍

  ECMAScript中有5中简单的数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String。

  

▓▓▓▓▓▓ Undefined

  Undefined时全局变量的一个属性,它只有一个值即:undefined。当使用var声明变量但未对其初始化时,这个变量的值就是undefined。

        var test;
        console.log(test);    //undefined

 

  对于未声明过的变量只能进行一种操作,即typeof检测其数据类型

        //var a 
        console.log(typeof a); //undefined

 

  undefined通常出现的场景:

    1、已经声明但未赋值的变量

    2、typeof检测未声明的变量的数据类型

    3、没有返回值的函数的执行结果

    4、函数没有传入参数

    5、void(expression)

        //1、
        var test;
        console.log(test);    //undefined

        //2、
        //var a 
        console.log(typeof a); //undefined

        //3、
        function f(){}
        console.log(f()); //undefined

        //4、
        function f(x){
            return x;
        }
        console.log(f()); //undefined

        //5、
        console.log(void(0)); //undefined

 

  严格相等和undefined

  可以使用严格相等和不相等来检测一个变量是否拥有值

         var x ;

        if(x === undefined){
            console.log(1);
        }else{
            console.log(2);
        }

  注意:这里要用严格相等,因为 null == undefined

 

  void操作符和undefined

  可以用void操作符来代替undefined

         var x ;

        if(x === void(0)){
            console.log(1);
        }else{
            console.log(2);
        }

 

▓▓▓▓▓▓ Null

  Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑的角度看,null值表示一个空对象的指针。null常被放在期望一个对象,但不引用任何对象的参数位置。

        console.log(document.getElementById('ol')); //null

 

 注意:

        console.log(typeof null); //object

  产生这样的原因就如前面所说,null值表示一个空对象的指针,用typeof检测数据类型,肯定就是object

  从最底层讲不同的对象在底层都表示为二进制,在javascript中二进制前三位都为0会被判断为object类型,null的二进制表示是全0,所以执行typeof时返回'object'

 

  null和undefined

  null和undefined时不同的,但是他们都表示空值,null表示“空值”,undefined表示“未定义”。

        typeof null        // object 
        typeof undefined   // undefined
        null === undefined // false
        null  == undefined // true
        null === null // true
        null == null // true
        !null //true
        isNaN(1 + null) // false
        isNaN(1 + undefined) // true

 

▓▓▓▓▓▓ Boolean

  Boolean类型是ECMAScript中使用最多的一种类型,该类型只有两个字面值:true和false

  注意:Boolean类型的字面值true和false是区分大小写的

  虽然Boolean类型的字面值只有两个,但是ECMAScript中所有的类型的值都有与这两个Boolean值等价的值。要将一个值转换为对应的Boolean值,可以调用转型函数Boolean()

        var message = 'hello world';
        var messageBoolean = Boolean(message);
        console.log(messageBoolean); //true

 

  转换表:

字符串 数字 布尔值
undefined "undefined" NaN false
null  “null”  0  false
true  “true”  1  
false  “false”  0  
""空字符串    0  
"1.2" 非空,数字    1.2  
"o" 非空,非数字      
 0  "0"    false
 -0 "0"    false 
 NaN  "NaN"   false 
 infinity  "infinity"   true 
-infinity   "infinity"   true 

 

参考资料:

  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Null

  http://www.cnblogs.com/xiaohuochai/p/5665637.html

  JavaScript高级程序设计(第3版)第三章

posted @ 2017-02-23 13:53  老板丶鱼丸粗面  阅读(1056)  评论(7编辑  收藏  举报