zoukankan      html  css  js  c++  java
  • JavaScript中null和undefined的区别

        var a = typeof null;
        var b = typeof undefined;
        console.log(a);//=>"object"
        console.log(b);//=>"undefined"
    

      

    null是JavaScript语言中的关键字,它表示一个特殊值,常用来描述“空值”。对null执行typeof预算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”。但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串和对象是“无值”的。大多数编程语言和JavaScript一样含有null:你可能对null或nil很眼熟。

    JavaScript还有第二值来表示值的空缺。用未定义的值表示更深层次的“空值”。它是变量的一种取值,表明变量没有初始化,如果要查询对象属性或数组元素的值时,返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参也会得到undefined。undefined是预定义的全局变量(它和null不一样,它不是关键字),它的值就是“未定义”。在ECMAScript3中,undefined是可读/写的变量,可以给它赋任意值。这个错误在ECMAScript5中做了修正,undefined在该版本中是只读的。如果使用typeof运算符得到undefined的类型,则返回“undefined”,表明这个值是这个类型的唯一成员。

    尽管null和undefined是不同的,但它们都表示“值的空缺”,两者往往可以互换。判断相等运算符“==”认为两者是相等的(要使用严格相等运算符“===”来区分它们)。在希望值是布尔类型的地方它们的值都是假值,和false类似。null和undefined都不包含任何属性和方法。实际上,使用“.”和“[]”来存取这两个值的成员或方法都会产生一个类型错误。

    你或许认为undefined是表示系统级的、出乎意料的火类似错误的值或空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。如果你想要将它们赋值给变量或属性,或将它们作为参数传入函数,最佳的选择是使用null。

    参考资料:

    《JavaScript权威指南》P44

  • 相关阅读:
    JAVA 程序pending 数据库锁
    圆形相遇问题
    DROP TABLE
    sed 删除
    JVM程序计数器
    《神奇的数学》颠覆你对数学的初始感觉
    error "OPatch cannot find a valid oraInst.loc file to locate Central Inventory
    【linux】提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低
    Linux 常用命令随笔(一)
    国际结算业务--国际结算中的票据
  • 原文地址:https://www.cnblogs.com/f6056/p/11881350.html
Copyright © 2011-2022 走看看