检查现有和已定义的元素

checking for existing and defined element

本文关键字:定义 元素 检查      更新时间:2024-03-01

var elem = document.getElementById ('anId');

if (elem) ...

给出与相同的结果

if (typeof elem !== "undefined"  &&  elem != null) ...

即我可以用第一个代替第二个吗?

是。在您给出的示例中,您可以使用第一个示例安全地检查是否返回了元素引用或null

底层机制是这样的:在JavaScript中,一切都可以被强制为布尔值。大多数事情都是"真实的"(它们胁迫true)。有些东西是falsey(它们强制为false)。伪值是null0""NaNundefined,当然还有false。truthy值是其他一切,包括所有非null对象引用。由于如果找不到元素,getElementById将返回null,如果可以,则返回对DOM元素的引用,因此第一次测试是安全的。

使用if(elem)是可以接受的,但请记住,if(elem)不会总是给您与if (typeof elem !== "undefined" && elem != null)相同的结果。JavaScript中存在falsy值,这些值本质上计算为false

例如,如果elem的值是0,则if(elem)不会评估为true,但第二种形式会。对于NaN""false这样的值,也会发生同样的情况。第二次检查更具体,因为您要显式检查nullundefined值。第一次检查没有那么具体,因为它会将elem的任何值强制为布尔值,然后检查该值是true还是false