在 JavaScript 函数的顶部声明变量时,最好将它们设置为 null 还是保留为“未定义”?另一种问法是,什么情况下需要以下每个选项?
选项 A:
var a = null,
b = null;
选项 B:
var a,
b;
在 JavaScript 函数的顶部声明变量时,最好将它们设置为 null 还是保留为“未定义”?另一种问法是,什么情况下需要以下每个选项?
选项 A:
var a = null,
b = null;
选项 B:
var a,
b;
这取决于上下文。
“未定义”表示该值不存在。typeof
返回“未定义”
“null”表示该值以空值存在。当您用于typeof
测试“null”时,您会看到它是一个对象。其他情况,当您将“null”值序列化到后端服务器(如 asp.net mvc)时,服务器将收到“null”,但当您序列化“undefined”时,服务器不太可能收到值。
当我不赋值时,我将它们声明为未定义,因为它们毕竟是未定义的。
通常,我将 null 用于我知道可以具有“null”状态的值;例如
if(jane.isManager == false){
jane.employees = null
}
否则,如果它是一个尚未定义的变量或函数(因此,目前不“可用”)但应该稍后设置,我通常不定义它。
一般来说,我定义null
为它表示人类设置了该值并undefined
表示没有进行任何设置。
我通常将它设置为我希望从函数返回的任何内容。
如果是字符串,我会将其设置为空字符串 ='',对象 ={} 和数组 =[] 相同,整数 = 0。
使用这种方法使我无需检查 null / undefined。无论结果如何,我的函数都将知道如何处理字符串/数组/对象。
如果您使用此值来分配某些对象的属性并稍后调用*,请小心JSON.stringify
- 将保留空值,但将省略未定义的属性,如下例所示:
var a, b = null;
c = {a, b};
console.log(c);
console.log(JSON.stringify(c)) // a omited
*或一些以类似方式工作或JSON.stringify
在下面使用的实用程序功能/库
您唯一需要设置(或不设置)的时间是您是否需要明确检查变量a
是否完全设置为null
or undefined
。
if(a === null) {
}
...与以下内容不同:
if(a === undefined) {
}
也就是说,a == null && a == undefined
将返回true
。
null有两个特点我们应该明白:
您可以将 null 分配给变量以表示当前该变量没有任何值,但稍后会有。null 表示没有值。
例子:-
let a = null;
console.log(a); //null
您可以使用'';
在 Javascript 中声明 NULL 变量