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



JSLint 标记这个:

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

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

我的理解是,如果我有"===",

它只会检查 null 本身,但如果我有(就像我一样)"==",它也会检查"无"的东西,例如空字符串。

如果我的假设是正确的,那么在许多情况下,"=="实际上可能是可取的,不是吗?

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

例如:

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 === "")
  • 如果你想检查一个字符串是否真的"包含某些东西",你可以检查if(myString)

最新更新