检查现有和已定义的元素

时间:2013-12-04 16:26:15

标签: javascript

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

if (elem) ...

给出与

相同的结果
if (typeof elem !== "undefined"  &&  elem != null) ...

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

使用if(elem)是可以接受的,但请注意,if(elem)不会总是给您与if (typeof elem !== "undefined" && elem != null)相同的结果。 JavaScript中有 falsy 值,基本上评估为false

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