JavaScript 空值检查
我遇到了以下代码:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
我对JavaScript有点陌生,但是,从我在这里阅读的其他问题来看,我的印象是这段代码没有多大意义。
如果您在typeof
以外的任何上下文中访问未定义的变量,则会收到错误。
更新:上面的(引用)答案可能具有误导性。它应该说“一个未声明的变量”,而不是“一个未定义的变量”。
正如我所发现的,在Ryan ♦,maerics和nwellnhof的答案中,即使没有向函数提供任何参数,其参数的变量也总是被声明的。这一事实也证明了下面列表中的第一项是错误的。
根据我的理解,可能会遇到以下情况:
该函数在没有参数的情况下被调用,因此使数据
成为未定义的变量,并在数据上引发错误!= null
。该函数是专门使用 (or ) 作为其参数调用的,在这种情况下,它已经保护了内部代码,使代码变得无用。
null
undefined
data != null
&& data !== undefined
该函数是使用非空参数调用的,在这种情况下,它将平凡地传递 和 。
data != null
data !== undefined
问:我的理解是否正确?
我已经在Firefox的控制台中尝试了以下内容:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
我无法弄清楚之后可能有什么用处。data !== undefined
data != null