zoukankan      html  css  js  c++  java
  • null的小扩展


    注意:JavaScript有6种数据类型,其中是五种基本数据类型,分别是:Undefined、Null、Boolean、Number
    和String,还有一种复杂的数据类型Object

    使用typeof操作符可以检测变量的数据类型

    比如

    typeof(undefined)	//undefined
    

    使用typeof只可以判断基本的数据类型

    var obj=[];
    console.log(typeof(obj));	//object
    

    所以,对于复杂的数据类型,我们需要用到instanceof操作符来进行判定

    var obj=[];
    console.log(obj instanceof Array);	//true
    

    问题

    现在提出我们的问题

    console.log(typeof(null));	//object
    console.log(null instanceof Object);	//false
    

    认真的想一想,明明typeof(null)输出的是对象,但是使用instanceof操作符检测时,又输出false,这不是矛盾的吗


    解答

    http://bbs.csdn.net/topics/370040293

    原来这涉及到JavaScript早期的规范

    Null数据类型只有一个值:null,就像Undefined数据类型只有一个值:undefined。问题出在typeof操作符的定义规范

    Type Result

    Undefined "undefined"

    Null "object"

    Boolean "boolean"

    Number "number"

    String "string"

    可以看到,对于Null类型的值(只有null),规范就是定义返回"object"这个字符串。但是本质上Null和Object
    不是一个数据类型,null值并不是以Object为原型创建出来的。所以null instanceof Object是false。但从这
    里也可以看到,null确实是javascript中用来表示空引用的一个特殊值。使得它不是instanceof Ojbect,而
    typeof null是“object”。在语义上也是可以理解的。

  • 相关阅读:
    【洛谷P3389】【模板】高斯消元
    【NOIP2016】提高组
    【NOIP2013】提高组
    【NOIP2012】提高组
    【NOIP2011】提高组
    【NOIP2010】提高组
    【NOIP2009】提高组
    【NOIP2008】提高组
    【NOIP2007】提高组
    【51nod 1189】阶乘分数——阶乘质因数分解
  • 原文地址:https://www.cnblogs.com/jelly7723/p/5639017.html
Copyright © 2011-2022 走看看