小编典典

JavaScript 空值检查

all

我遇到了以下代码:

function test(data) {
    if (data != null && data !== undefined) {
        // some code here
    }
}

我对 JavaScript 有点陌生,但是,从我在这里阅读的其他问题来看,我的印象是这段代码没有多大意义。


特别是, 这个答案指出

如果您在除typeof.

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

的回答中,即使没有为函数提供参数,它的参数变量也总是被声明。这一事实也证明了下面列表中的第一项是错误的。


据我了解,可能会遇到以下几种情况:

  • 该函数在没有参数的情况下被调用,因此产生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 !== undefined after data != null可能有用的情况。


阅读 84

收藏
2022-08-05

共1个答案

小编典典

“未定义变量”与值不同undefined

一个未定义的变量:

var a;
alert(b); // ReferenceError: b is not defined

具有值的变量undefined

var a;
alert(a); // Alerts 鈥渦ndefined鈥�

当一个函数接受一个参数时,该参数总是被声明,即使它的值为undefined,因此不会有任何错误。不过,你是对!= null的,但毫无用处!== undefined

2022-08-05