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