为什么 null 是一个对象,null 和 unfined 之间有什么区别?

2022-08-29 22:14:09

为什么在 JavaScript 中被认为是 a?nullobject

正在检查

if ( object == null )
      Do something

if ( !object )
      Do something

?

此外:

和 有什么区别?nullundefined


答案 1
(name is undefined)

你:什么? (*)
JavaScript: ?什么是?我不知道你在说什么。你以前从未提到过任何东西。您是否在(客户端)端看到其他脚本语言?namenamenamename

name = null;

你:什么?
JavaScript:我不知道。name

简而言之; 是不存在事物概念的地方;它没有类型,并且以前从未在该范围内被引用过; 是已知事物存在的地方,但不知道其值是什么。undefinednull

要记住的一件事是,从概念上讲,这与或此类并不相同,即使它们在类型转换之后相等,即nullfalse""

name = false;

你:什么?
JavaScript:布尔错误。name

name = '';

你:什么?
JavaScript:空字符串name


*:在此上下文中,名称表示为从未定义过的变量。它可以是任何未定义的变量,但是,name是几乎任何HTML表单元素的属性。它走得很远,很久以前就已经建立了。它很有用,因为 ID 必须是唯一的,但名称不必是唯一的。


答案 2

差异可以总结为以下代码段:

alert(typeof(null));      // object
alert(typeof(undefined)); // undefined

alert(null !== undefined) //true
alert(null == undefined)  //true

检查

object == null是不同的检查。if ( !object )

后者等于 ,因为一元运算符会自动将正确的操作数转换为布尔值。! Boolean(object)!

既然等于假,那么.Boolean(null)!false === true

因此,如果您的对象不是 null而是 false0“”,则检查将通过,因为:

alert(Boolean(null)) //false
alert(Boolean(0))    //false
alert(Boolean(""))   //false