JavaScript null check
JavaScript null check
我遇到了以下代码:
function test(data) { if (data != null && data !== undefined) { // 在这里写一些代码 } }
我对JavaScript还有些陌生,但是从我在这里阅读的其他问题中得出的印象是,这段代码并没有太多意义。
特别是,这个答案指出:
除了typeof
之外的任何上下文中访问未定义的变量都会导致错误。
更新:上面(引用的)答案可能会误导。它应该说“一个未声明的变量”,而不是“一个未定义的变量”。
正如我在Ryan 、maerics和nwellnhof的答案中发现的那样,即使没有向函数提供参数,其参数的变量也总是被声明的。这个事实也证明了下面列表中的第一项是错误的。
据我理解,可能会遇到以下情况:
函数被调用时没有提供参数,因此使得data
成为一个未定义的变量,并在data != null
时引发错误。- 函数被特别调用时以
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 != null
之后data !== undefined
有任何用途的情况。