zoukankan      html  css  js  c++  java
  • Javascript 中 null、NaN和undefined的区别

    1.类型分析:

     

    js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型

    代码

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
    var a1;

    var a2 = true;
    var a3 = 1;
    var a4 = "Hello";
    var a5 = new Object();
    var a6 = null;
    var a7 = NaN;
    var a8 = undefined;

    alert(typeof a);   //显示"undefined"
    alert(typeof a1); //显示"undefined"
    alert(typeof a2); //显示"boolean"
    alert(typeof a3); //显示"number"
    alert(typeof a4); //显示"string"
    alert(typeof a5); //显示"object"
    alert(typeof a6); //显示"object"
    alert(typeof a7); //显示"number"
    alert(typeof a8); //显示"undefined" 



    从上面的代码中可以看出未定义的值和定义未赋值的为undefined,null是一种特殊的object,NaN是一种特殊的number。

    2.比较运算

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
    var a1;          //a1的值为undefined

    var a2 = null;
    var a3 = NaN;

    alert(a1 == a2); //显示"true"
    alert(a1 != a2); //显示"false"

    alert(a1 == a3); //显示"false"
    alert(a1 != a3); //显示"true"

    alert(a2 == a3); //显示"false"
    alert(a2 != a3); //显示"true"

    alert(a3 == a3); //显示"false"
    alert(a3 != a3); //显示"true"
     

    从上面的代码可以得出结论:(1)undefined与null是相等;(2)NaN与任何值都不相等,与自己也不相等。

    JavaScript undefined 属性

    定义和用法

    undefined 属性用于存放 JavaScript 的 undefined 值。

    语法

    undefined

    说明

    无法使用 for/in 循环来枚举 undefined 属性,也不能用 delete 运算符来删除它。

    undefined 不是常量,可以把它设置为其他值。

    当尝试读取不存在的对象属性时也会返回 undefined。

    提示和注释

    < 值等价于 undefined 运算符认为 运算来测试某个值是否是未定义的,因为="=" ="==">

    < 表示无值,而>

    实例

    在本例中,我们将检测两个变量中未定义的一个:

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><script type="text/javascript">
    var t1=""
    var t2

    if (t1===undefined) {document.write("t1 is undefined")}
    if (t2===undefined) {document.write("t2 is undefined")}

    </script> 输出:

    t2 is undefined
     
    [补充]
    Null 数据类型 
    Jscript 中数据类型 null 只有一个值:null。关键字 null 不能用作函数或变量的名称。

    包含 null 的变量包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象。可以通过给一个变量赋 null 值来清除变量的内容。

    请注意,在 Jscript 中,null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是,Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。这点潜在的混淆是为了向下兼容。

    Undefined 数据类型
    如下情况使返回 undefined 值:

    对象属性不存在,
    声明了变量但从未赋值。
    注意不能通过与 undefined 做比较来测试一个变量是否存在,虽然可以检查它的类型是否为“undefined”。在以下的代码范例中,假设程序员想测试是否已经声明变量 x :

    // 这种方法不起作用
    if (x == undefined)
        // 作某些操作
    // 这个方法同样不起作用- 必须检查
    // 字符串 "undefined"
    if (typeof(x) == undefined)
        // 作某些操作
    // 这个方法有效
    if (typeof(x) == "undefined")
        // 作某些操作
    考虑将 undefined 值与null做比较。

    someObject.prop == null;
    如下情况时,比较的结果为 true,

    如果属性 someObject.prop 包含 null 值,
    如果属性 someObject.prop 不存在。
    要检查一个对象属性是否存在,可以使用新的 in 运算符:
    if ("prop" in someObject)
    // someObject 有属性 ’prop’

    在JavaScript中,null与undefined一度使人迷惑。下面的分析,有利于你更清晰的认知它(或者让你更迷惑):

    - null是关键字;undefined是Global对象的一个属性

    - null是对象(空对象, 没有任何属性和方法);undefined是undefined类型的值。试试下面的代码:

           document.writeln(typeof null); //return object
           document.writeln(typeof undefined); //return undefined

    - 对象模型中,所有的对象都是Object或其子类的实例,但null对象例外:
           document.writeln(null instanceof Object); //return false

    - null“等值(==)”于undefined,但不“全等值(===)”于undefined:
           document.writeln(null == undefined); //return true
           document.writeln(null === undefined); //return false

    - 运算时null与undefined都可以被类型转换为false,但不等值于false:
           document.writeln(!null, !undefined); //return true,true
           document.writeln(null==false); //return false
           document.writeln(undefined==false); //return false
  • 相关阅读:
    如何:为 Silverlight 客户端生成双工服务
    Microsoft Sync Framework 2.1 软件开发包 (SDK)
    Windows 下的安装phpMoAdmin
    asp.net安全检测工具 Padding Oracle 检测
    HTTP Basic Authentication for RESTFul Service
    Windows系统性能分析
    Windows Server AppFabric Management Pack for Operations Manager 2007
    Mongo Database 性能优化
    服务器未能识别 HTTP 标头 SOAPAction 的值
    TCP WAIT状态及其对繁忙的服务器的影响
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/3993133.html
Copyright © 2011-2022 走看看