将JavaScript变量设置为null,还是保留未定义?
在JavaScript函数顶部声明变量时,最佳做法是将它们设置为null,还是保留为“未定义”?另一种提问方式是,以下每个选项需要什么样的条件 备选方案A:将JavaScript变量设置为null,还是保留未定义?,javascript,Javascript,在JavaScript函数顶部声明变量时,最佳做法是将它们设置为null,还是保留为“未定义”?另一种提问方式是,以下每个选项需要什么样的条件 备选方案A: var a = null, b = null; 备选案文B: var a, b; 当我不赋值时,我声明它们为未定义的,因为它们毕竟是未定义的。唯一需要设置它(或不设置)的时间是,如果您需要显式检查变量a是否被精确设置为null或未定义 if(a === null) { } …不同于: if(a === undefin
var a = null,
b = null;
备选案文B:
var a,
b;
当我不赋值时,我声明它们为未定义的,因为它们毕竟是未定义的。唯一需要设置它(或不设置)的时间是,如果您需要显式检查变量
a
是否被精确设置为null
或未定义
if(a === null) {
}
…不同于:
if(a === undefined) {
}
也就是说,a==null&&a==undefined
将返回true
这取决于上下文
- “未定义”表示此值不存在<代码>类型
返回“未定义”
“null”表示此值存在时带有空值。当您使用typeof
测试“null”时,您将看到它是一个对象。另一种情况是,当您将“null”值序列化到后端服务器(如asp.net mvc)时,服务器将收到“null”,但当您序列化“undefined”时,服务器不太可能收到值
通常,我使用null表示我知道可能具有“null”状态的值;比如说
if(jane.isManager == false){
jane.employees = null
}
否则,如果它是一个尚未定义的变量或函数(因此目前不“可用”),但应该稍后设置,我通常不定义它。您可以使用”
在Javascript中声明NULL变量一般来说,我定义了NULL
,因为它表示有人设置了值,而未定义的表示没有进行任何设置。我通常将其设置为我期望从函数返回的任何值
如果是字符串,那么我会将其设置为空字符串=“”,对象={}和数组=[],整数=0也是如此
使用此方法使我无需检查null/undefined。无论结果如何,我的函数都知道如何处理字符串/数组/对象。null有两个特性我们应该了解:
null是空值或不存在的值
null必须被分配
您可以将null分配给变量,以表示当前该变量没有任何值,但稍后它将有任何值。null表示没有值
示例:-
let a = null;
console.log(a); //null
如果使用此值指定某个对象的属性并稍后调用JSON.stringify
later*-将保留空值,但将忽略未定义的属性,如下例所示:
var a,b=null;
c={a,b};
控制台日志(c);
console.log(JSON.stringify(c))//省略a
我将使用选项b
@Mr.Alien-同意。没有理由使用=null
版本,除非变量值是null
而不是undefined
代码>可能并不总是保持它未定义。在以前的IE版本中,您需要将这段代码更改为var a=undefined,b=undefined代码>,否则您的代码在尝试访问它时会生成错误(例如,即使您只是尝试使用if(a&&b)
检查它是否有一些值)。在这种情况下,未设置的变量与未定义的不同。在这种情况下检查null是不好的。因为它违反了javascript中的“避免空比较”最佳实践。您应该只对DOM对象()比较null,我不同意;我们所要做的就是看看一个变量实际上是null
还是未定义的
——这是完全有效的检查。我同意在您引用的示例中,检查null
是个坏主意,但这只是一种情况:)空字符串和null
是非常不同的事情。那么是否有必要“赋值”未定义,因为正如您所说,它们毕竟是未定义的?如前所述,没有必要声明未定义,但如果您确实声明未定义,那么在测试该值时,您将不知道是故意设置的还是从未实际设置的。这就是为什么在没有值的情况下我更喜欢null。