首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当JavaScript返回null & undefined?

当JavaScript返回null & undefined?
EN

Stack Overflow用户
提问于 2009-10-13 12:38:43
回答 4查看 41.1K关注 0票数 18

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

但最近我是通过this article来的。他们在这里说

JavaScript区分了null和undefined,前者是一个' object‘类型的对象,表示有意的非值,后者是一个'undefined’类型的对象,表示一个未初始化的值-也就是说,一个值还没有被赋值。我们稍后会讨论变量,但是在JavaScript中,可以声明一个变量而不给它赋值。如果这样做,变量的类型是未定义的。

我现在完全迷惑了,这里到底什么是无价值的。这个非值与undefined有何不同。什么情况下javascript返回null

我已经试过下面的样品了

代码语言:javascript
复制
var sam;
alert(sam);  // returns undefined

代码语言:javascript
复制
try {
    //var sam;
    alert(sam);  
} catch(ex) { }   // exception says: sam is undefined

我不确定js什么时候返回null。有没有人能告诉我。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-13 12:52:17

警报(Sam);//返回未定义

不,那是个例外。

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

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

代码语言:javascript
复制
alert(window.sam);      // undefined
alert(window['sam']);   // undefined
alert('sam' in window); // false
alert(sam);             // ERROR

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

代码语言:javascript
复制
var sam;
alert(window.sam);      // undefined
alert(window['sam']);   // undefined
alert('sam' in window); // ** true
alert(sam);             // ** undefined

这当然是一个令人困惑的烂摊子;undefined是JavaScript语言设计中最严重的错误之一。

另一方面,null很好,其工作方式与其他语言中的null/nil/void/None值基本相同。它不属于上述任何一种情况。

票数 14
EN

Stack Overflow用户

发布于 2009-10-13 12:54:21

代码语言:javascript
复制
<script type="text/javascript">
// variable with an unasigned value
var a;
if (a == undefined) {
  alert('a is undefined');
}

if (a == null) {
  alert('a is undefined');
}

// this will produce an error
if (b == undefined) {
  alert('b is undefined');
}

// this is the right way to handle not defined variables
if (typeof(c) == 'undefined') {
  alert('c is blabla');
}
</script>
票数 2
EN

Stack Overflow用户

发布于 2009-10-13 12:55:37

要使变量接收空值,必须对其赋值。null用于表示未知或不关心的值。另一方面,undefined被设计用来指示被访问的属性从未被赋值。这不同于null

对于null,一个人故意说“我还不知道这应该有什么价值”或“我现在不在乎这是什么价值”。undefined中的OTH实际上是在问“你确定你应该使用这个值吗?它还没有被赋值”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1559952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档