JavaScript null check

16 浏览
0 Comments

JavaScript null check

我遇到了以下代码:

function test(data) {
    if (data != null && data !== undefined) {
        // 在这里写一些代码
    }
}

我对JavaScript还有些陌生,但是从我在这里阅读的其他问题中得出的印象是,这段代码并没有太多意义。


特别是,这个答案指出:

除了typeof之外的任何上下文中访问未定义的变量都会导致错误。

更新:上面(引用的)答案可能会误导。它应该说“一个未声明的变量”,而不是“一个未定义的变量”。

正如我在Ryan maericsnwellnhof的答案中发现的那样,即使没有向函数提供参数,其参数的变量也总是被声明的。这个事实也证明了下面列表中的第一项是错误的。


据我理解,可能会遇到以下情况:

  • 函数被调用时没有提供参数,因此使得data成为一个未定义的变量,并在data != null时引发错误。
  • 函数被特别调用时以null(或undefined)作为其参数,在这种情况下data != null已经保护了内部代码,使&& data !== undefined变得无用。
  • 函数被调用时带有非空参数,在这种情况下,它将简单地通过data != nulldata !== 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有任何用途的情况。

0