使用两个等号不好的做法在jQuery中检查null对字符串?

时间:2015-03-17 15:13:01

标签: jquery null jslint string

JSLint标记了这个:

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

...使用警告" 比较null,0,true,false或允许隐式类型转换的空字符串(使用===或!==)&# 34;

我的理解是,如果我有" ==="它只会检查null本身,但如果我有(像我一样)" =="它还会检查那些没有"没有"比如空字符串。

如果我的假设是正确的," =="在许多这样的情况下,实际上可能是理想的,不是吗?

1 个答案:

答案 0 :(得分:1)

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

例如:

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)