47

在我的代码中,我看到了这个:

if (document.getElementById('xx') !=null) {
    //do stuff
}

如果xx未定义元素,这将评估为真还是假?

我应该写:

if (document.getElementById('xx'))

为了安全?

4

3 回答 3

94
console.log(document.getElementById('xx') ) evaluates to null.

document.getElementById('xx') !=null evaluates to false

你应该使用document.getElementById('xx') !== null它,因为它是一个更强的平等检查。

于 2013-03-27T18:07:34.540 回答
27

getElementByIdDOM Level 1 HTML定义为在没有元素匹配的情况下返回null

!==null是检查的最明确的形式,并且可能是最好的,但是没有可以返回的非null虚假值getElementById- 您只能获取null或始终真实的 Element 对象。所以这里没有实际的区别!==null!=null或者更宽松的if (document.getElementById('xx'))

于 2013-03-27T18:11:06.790 回答
10

是的,如果它不存在,它将返回 null 你可以在下面的演示中尝试这个。两者都将返回 true。第一个元素存在,第二个元素不存在。

演示

html

<div id="xx"></div>

Javascript:

   if (document.getElementById('xx') !=null) 
     console.log('it exists!');

   if (document.getElementById('xxThisisNotAnElementOnThePage') ==null) 
     console.log('does not exist!');
于 2013-03-27T18:08:32.447 回答