当JavaScript返回null&undefined时?

Ram*_*Vel 18 javascript null undefined

我已经使用JavaScript几年了,从不关心nullundefined之前的区别,我总是undefined用来验证对象的存在.

但最近我通过这篇文章.他们在这里说

JavaScript区分null,它是'object'类型的对象,表示故意的非值; undefined,是一个'undefined'类型的对象,表示未初始化的值 - 也就是说,一个值甚至没有已分配.我们稍后将讨论变量,但在JavaScript中,可以声明变量而不为其赋值.如果这样做,变量的类型是未定义的.

我现在完全糊涂了,这里究竟是什么非价值.这个非价值如何不同undefined.什么是javascript返回的情况null.

我试过以下样本

var sam;
alert(sam);  // returns undefined
Run Code Online (Sandbox Code Playgroud)

try {
    //var sam;
    alert(sam);  
} catch(ex) { }   // exception says: sam is undefined
Run Code Online (Sandbox Code Playgroud)

而且我不确定js何时返回null.有人可以澄清我.

bob*_*nce 14

警报(SAM); //返回undefined

不,这是一个例外.

undefined当您访问未设置的属性时,您会得到; 直接使用未设置名称时出现错误.

全局变量很有意思,因为可以使用简单的变量名称或使用window全局对象的属性来访问它们:

alert(window.sam);      // undefined
alert(window['sam']);   // undefined
alert('sam' in window); // false
alert(sam);             // ERROR
Run Code Online (Sandbox Code Playgroud)

如果sam声明但未初始化,则访问window.sam仍会获取undefined,但由于其他原因:window对象中有一个条目sam,但它指向undefined访问不存在的属性时获得的同一对象.

var sam;
alert(window.sam);      // undefined
alert(window['sam']);   // undefined
alert('sam' in window); // ** true
alert(sam);             // ** undefined
Run Code Online (Sandbox Code Playgroud)

这当然是令人困惑的血腥混乱; undefined是JavaScript语言设计中最严重的错误之一.

null另一方面很好,并且与其他语言中的null/nil/void/None值非常相似.它没有涉及上述任何一个.