Ram*_*Vel 18 javascript null undefined
我已经使用JavaScript几年了,从不关心null和undefined之前的区别,我总是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值非常相似.它没有涉及上述任何一个.