JavaScript中的null和undefined有什么区别?

我想知道JavaScript中的nullundefined之间的区别。


在JavaScript中, undefined意味着一个变量已经被声明,但尚未被分配一个值,例如:

var TestVar;
alert(TestVar); //shows undefined
alert(typeof TestVar); //shows undefined

null是一个赋值。 它可以分配给一个变量作为没有值的表示:

var TestVar = null;
alert(TestVar); //shows null
alert(typeof TestVar); //shows object

从前面的例子中可以明显看出, undefinednull是两种不同的类型: undefined是一个类型本身(undefined),而null是一个对象。

null === undefined // false
null == undefined // true
null === null // true

null = 'value' // ReferenceError
undefined = 'value' // 'value'

我从这里选择了这个

未定义的值是当变量未被赋值时使用的原始值。

空值是表示空,空或不存在的引用的原始值。

当你通过var声明一个变量并且不给它一个值时,它将具有未定义的值。 就其本身而言,如果您尝试使用WScript.Echo()或alert()此值,则不会看到任何内容。 但是,如果您向其添加空白字符串,则会突然显示:

var s;
WScript.Echo(s);
WScript.Echo("" + s);

您可以声明一个变量,将其设置为null,并且行为是相同的,只不过您会看到“null”打印出来而不是“未定义”。 这确实是一个很小的差异。

您甚至可以将未定义的变量与空值进行比较,反之亦然,并且条件成立:

undefined == null
null == undefined

然而,它们被认为是两种不同的类型。 虽然undefined是一个全部自身的类型,但null被认为是一个特殊的对象值。 你可以通过使用typeof()来看到这个,它返回一个表示变量一般类型的字符串:

var a;
WScript.Echo(typeof(a));
var b = null;
WScript.Echo(typeof(b));

运行上面的脚本将产生以下输出:

undefined
object

不管他们是不同的类型,如果你尝试访问任何一个类型的成员,他们仍然会采取相同的行动,例如,也就是说他们会抛出异常。 有了WSH,你会看到可怕的“'varname'为空或不是对象”,这就是如果你幸运的话(但这是另一篇文章的主题)。

你可以明确地设置一个变量为未定义的,但我强烈反对它。 我建议只将变量设置为null,并为您忘记设置的值留下未定义的值。 同时,我真的鼓励你总是设定每个变量。 JavaScript的作用域链与C风格语言的作用域链不同,即使是经验丰富的程序员也容易混淆,并且将变量设置为null是防止基于它的错误的最佳方法。

另一个你会看到未定义的实例是使用delete操作符。 我们这些来自C世界的人可能会错误地将此解释为摧毁一个对象,但事实并非如此。 这个操作的作用是从一个数组或一个对象的成员中删除一个下标。 对于数组,它不影响长度,但现在将下标视为未定义。

var a = [ 'a', 'b', 'c' ];
delete a[1];
for (var i = 0; i < a.length; i++)
WScript.Echo((i+".) "+a[i]);

以上脚本的结果是:

0.) a
1.) undefined
2.) c

阅读未曾存在的下标或成员时,您还会得到未定义的返回值。

null和undefined之间的区别是:JavaScript不会将任何内容设置为null,这通常是我们所做的。 虽然我们可以将变量设置为未定义,但我们更喜欢null,因为它不是我们所做过的。 当你调试时,这意味着设置为null的任何东西都是你自己做的,而不是JavaScript。 除此之外,这两个特殊值几乎相同。


null是指示缺少值的特殊关键字。

把它看作一种价值,就像:

  • “foo”是字符串,
  • true是布尔值,
  • 1234是号码,
  • null是未定义的。

  • 未定义的属性表明一个变量还没有被赋予一个包含null的值。 喜欢

    var foo;
    

    定义空变量是null数据类型的undefined


    它们都代表一个没有值的变量的值

    AND null不代表没有值的字符串 - 空字符串 -


    喜欢

    var a = ''; 
    console.log(typeof a); // string 
    console.log(a == null); //false 
    console.log(a == undefined); // false 
    

    现在如果

    var a;
    console.log(a == null); //true
    console.log(a == undefined); //true 
    

    var a; 
    console.log(a === null); //false 
    console.log(a === undefined); // true
    

    所以每个人都有自己的使用方式

    未定义使用它来比较变量数据类型

    null用它来清空变量的值

    var a = 'javascript';
    a = null ; // will change the type of variable "a" from string to object 
    
    链接地址: http://www.djcxy.com/p/51863.html

    上一篇: What is the difference between null and undefined in JavaScript?

    下一篇: JSON Parse Error Using jQuery.parseJSON