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

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

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

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

    以下是测试结果:

    根据第一条和第二条输出null和undefined的类型可以得出三四条结论,即null 和undefined值相等都是空值,但是类型不同,所以=== 的时候是false.原理跟五、六条的判断一样123 和‘123’值相等,但是一个是数值类型,一个是字符窜。所以===为false

    直接输出一个x会报错,定义了x但未给其赋值。则为undefined,最后一条直接z=null 意思即是定义z是一个object类型,但其内容为空。

    根据undefined的意思,在定义的时候给值赋值为undefined是不合理的。最笨的理解方法,undefined本来就表示未定义,但是在定义的时候又给赋值undefined,这样子跟它本来的意思自行矛盾。违背了初衷。如下图会报语法错误。

    这样子应该很清楚了,恩。很清楚了:)

  • 相关阅读:
    手机号码正则表达式
    POJ 3233 Matrix Power Series 矩阵快速幂
    UVA 11468
    UVA 1449
    HDU 2896 病毒侵袭 AC自动机
    HDU 3065 病毒侵袭持续中 AC自动机
    HDU 2222 Keywords Search AC自动机
    POJ 3461 Oulipo KMP模板题
    POJ 1226 Substrings KMP
    UVA 1455 Kingdom 线段树+并查集
  • 原文地址:https://www.cnblogs.com/enemy/p/3776508.html
Copyright © 2011-2022 走看看