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)