Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript x==未定义的正确替换是什么?_Javascript_Undefined - Fatal编程技术网

Javascript x==未定义的正确替换是什么?

Javascript x==未定义的正确替换是什么?,javascript,undefined,Javascript,Undefined,我正在尝试清理一些代码(修复警告) 最好的替代品是什么 if (x == undefined) {...} ? 我使用的,是以下等价物: if (x === null || _.isUndefined(x)) {...} 还是我遗漏了一些边缘案例? 什么与未定义相等(==)?(假设没有人做过var undefined='asdf'或任何类似的坏事)。正确的替代方法是: if( typeof x === "undefined") 使用x==undefined时,实际上检查x-undefine

我正在尝试清理一些代码(修复警告)

最好的替代品是什么

if (x == undefined) {...}
?

我使用的,是以下等价物:

if (x === null || _.isUndefined(x)) {...}
还是我遗漏了一些边缘案例?
什么与未定义相等(
==
)?(假设没有人做过
var undefined='asdf'
或任何类似的坏事)。

正确的替代方法是:

if( typeof x === "undefined")

使用
x==undefined
时,实际上检查
x
-
undefined
本身和
null
的两个值。但是请注意,缺少声明的
x
变量将在此处触发错误;要防止这种情况,请使用

if (typeof x === 'undefined' || x === null) { ... }
但我实际上认为这个警告的真正含义是,您不应该在一个代码分支中同时检查
null
undefined
,因为它们是不同的值

然而,如果您对此感到安全,您可以使用
eqnull
选项在JSHint中关闭这些特定检查。然后

if (x == null) { ... }
。。。将同时检查
null
undefined
,但不会触发警告。但是请注意,
==未定义的
比较不包含在该选项中


作为旁注,下划线的
isUndefined
方法是一段有趣的代码:

_.isUndefined = function(obj) {
  return obj === void 0;
};

它本质上与simple
obj===undefined
相同,但涵盖了一种特殊情况:当有人认为在脚本中覆盖
undefined
的值是个好主意时。由于
void
construct始终返回“real
undefined
”,因此即使在这种情况下,此函数也能正常工作。

if(typeof x=='undefined')
为什么要替换此?@xbonez为什么typeof?为什么不
x==未定义的
?@H2CO3“修复jshint警告”post@Kos:因为
未定义的
不是一个关键词,虽然这是正确的,但我认为如果解释一下
==
==
的关系,以及为什么要使用
类型的
,这将有助于充实。或者您刚才正忙于键入:o)您需要执行typeof以避免抛出未声明的变量up@roryf:
==
=
在这种特殊情况下是完全等效的。-1这可能会破坏代码。如果原始代码是如上所述编写的,我不想现在调试它并验证它从不接受null。现在我只想在保留其原始含义的同时对其进行重构。这是一种使用
void
:)的有趣方式,当然比我的匿名函数包装器要好。