使用两个等号检查 jQuery 中的字符串是否为 null 是不好的做法吗?

Is checking for null against a string in jQuery using two equals signs bad practice?

JSLint 标记此:

if ($(stringToClean).html() == null)

...带有警告“比较 null、0、true、false 或允许隐式类型转换的空字符串(使用 === 或 !==)

我的理解是,如果我有“===”,它只会检查 null 本身,但如果我有(像我一样)“==”,它也会检查 "nothing" 比如一个空字符串。

如果我的假设是正确的,那么在很多这样的情况下“==”实际上可能是可取的,不是吗?

== 运算符检查值,而运算符 === 检查值 类型。

例如:

5 == "5" -> true

5 === "5" -> false

要理解null,还需要考虑undefined

typeof(null) -> object

typeof(undefined) -> undefined

但是

null == undefined -> true

在您的示例中,让我们假设您尝试在没有任何匹配项的选择器上调用 html() 方法:

$('#nonExistentDiv').html()

结果是undefined。这意味着:

$('#nonExistentDiv').html() === null -> false

$('#nonExistentDiv').html() == null -> true

如果您尝试使用现有但为空的 DIV 元素,您会得到一个空字符串:

$('#emptyDiv').html() == null -> false
$('#emptyDiv').html() == 0 -> true (intresting!)
$('#emptyDiv').html() === "" -> true

所以:

  • 如果你想检查一个字符串是否为空,你应该使用 if(myString == null)
  • 如果你想检查一个字符串是否为空if(myString === "")
  • 如果你想检查一个字符串是否真的 "contains something" 你可以检查 if(myString)