检查现有和已定义的元素
checking for existing and defined element
说
var elem = document.getElementById ('anId');
if (elem) ...
给出与相同的结果
if (typeof elem !== "undefined" && elem != null) ...
即我可以用第一个代替第二个吗?
是。在您给出的示例中,您可以使用第一个示例安全地检查是否返回了元素引用或null
。
底层机制是这样的:在JavaScript中,一切都可以被强制为布尔值。大多数事情都是"真实的"(它们胁迫true
)。有些东西是falsey
(它们强制为false
)。伪值是null
、0
、""
、NaN
、undefined
,当然还有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
这样的值,也会发生同样的情况。第二次检查更具体,因为您要显式检查null
和undefined
值。第一次检查没有那么具体,因为它会将elem
的任何值强制为布尔值,然后检查该值是true
还是false
。
相关文章:
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 如何使用javascript独立地为聚合物自定义元素的每个实例的lightdom设置样式
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- 如何在 Aurelia(奥雷利亚)中访问自定义元素中的变量
- Javascript 向影子根中的自定义元素添加函数
- 在自定义元素中扩展 HTMLCanvasElement 问题
- 聚合物 - 访问自定义元素内的 DOM 输入元素
- 在具有CONTENT标记的自定义元素中使用SELECT标记时出现问题
- 聚合物种子-自定义元素依赖关系
- 自定义元素在JavaScript中创建
- 访问嵌套Polymer自定义元素中的JavaScript方法
- 当.js和.html不在同一文件夹中时,如何在Aurelia中创建自定义元素
- 自定义元素之间的聚合物双向结合[包括示例]
- 从 React 中的自定义元素中修改属性
- 聚合物:创建一个“;一般的“;自定义元素
- Aurelia-仅HTML自定义元素的内联定义
- 手动编译由 aurelia 中的其他自定义元素组成的 dom 元素
- 为什么我们必须注册一个自定义元素
- 聚合物自定义元素和聚合物手势
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么