我遇到了以下代码:
function test(data) { if (data != null && data !== undefined) { // some code here } }
我对 JavaScript 有点陌生,但是,从我在这里阅读的其他问题来看,我的印象是这段代码没有多大意义。
特别是, 这个答案指出
如果您在除typeof.
typeof
更新: 上面的(引用)答案可能具有误导性。它应该说 芦一个未声明的变量» ,而不是 芦一个未定义的变量» 。
的回答中,即使没有为函数提供参数,它的参数变量也总是被声明。这一事实也证明了下面列表中的第一项是错误的。
据我了解,可能会遇到以下几种情况:
该函数在没有参数的情况下被调用,因此产生data了一个未定义的变量,并在data != null.
data
data != null
该函数是用null(或undefined)作为其参数专门调用的,在这种情况下data != null已经保护了内部代码,从而&& data !== undefined变得无用。
null
undefined
&& data !== undefined
该函数是使用非空参数调用的,在这种情况下,它会简单地传递data != null 和 data !== undefined。
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可能有用的情况。
“未定义变量”与值不同undefined。
一个未定义的变量:
var a; alert(b); // ReferenceError: b is not defined
具有值的变量undefined:
var a; alert(a); // Alerts 鈥渦ndefined鈥�
当一个函数接受一个参数时,该参数总是被声明,即使它的值为undefined,因此不会有任何错误。不过,你是对!= null的,但毫无用处!== undefined。
!= null
!== undefined