60

在 JavaScript 函数的顶部声明变量时,最好将它们设置为 null 还是保留为“未定义”?另一种问法是,什么情况下需要以下每个选项?

选项 A:

var a = null,
    b = null;

选项 B:

var a,
    b;
4

9 回答 9

48

这取决于上下文。

  • “未定义”表示该值不存在。typeof返回“未定义”

  • “null”表示该值以空值存在。当您用于typeof测试“null”时,您会看到它是一个对象。其他情况,当您将“null”值序列化到后端服务器(如 asp.net mvc)时,服务器将收到“null”,但当您序列化“undefined”时,服务器不太可能收到值。

于 2013-05-10T03:52:50.370 回答
26

当我不赋值时,我将它们声明为未定义,因为它们毕竟是未定义的。

于 2013-05-10T03:39:57.437 回答
13

通常,我将 null 用于我知道可以具有“null”状态的值;例如

if(jane.isManager == false){
  jane.employees = null
}

否则,如果它是一个尚未定义的变量或函数(因此,目前不“可用”)但应该稍后设置,我通常不定义它。

于 2013-05-10T03:53:40.827 回答
6

一般来说,我定义null为它表示人类设置了该值并undefined表示没有进行任何设置。

于 2016-07-10T14:42:27.233 回答
5

我通常将它设置为我希望从函数返回的任何内容。

如果是字符串,我会将其设置为空字符串 ='',对象 ={} 和数组 =[] 相同,整数 = 0。

使用这种方法使我无需检查 null / undefined。无论结果如何,我的函数都将知道如何处理字符串/数组/对象。

于 2017-10-16T21:13:51.673 回答
3

如果您使用此值来分配某些对象的属性并稍后调用*,请小心JSON.stringify- 将保留空值,但将省略未定义的属性,如下例所示:

var a, b = null;

c = {a, b};

console.log(c);
console.log(JSON.stringify(c)) // a omited

*或一些以类似方式工作或JSON.stringify在下面使用的实用程序功能/库

于 2019-02-19T14:04:53.487 回答
2

您唯一需要设置(或不设置)的时间是您是否需要明确检查变量a是否完全设置为nullor undefined

if(a === null) {

}

...与以下内容不同:

if(a === undefined) {

}

也就是说,a == null && a == undefined将返回true

小提琴

于 2013-05-10T03:48:57.177 回答
0

null有两个特点我们应该明白:

  1. null是一个空值或不存在的值。
  2. 必须分配null 。

您可以将 null 分配给变量以表示当前该变量没有任何值,但稍后会有。null 表示没有值。

例子:-

 let a = null;
 console.log(a); //null
于 2019-02-19T13:23:09.230 回答
-17

您可以使用'';在 Javascript 中声明 NULL 变量

于 2015-01-15T05:58:38.490 回答