javascript - 在javascript中测试未定义的方法的差异

标签 javascript jquery

我一直不明白这两种测试对象是否存在的方法的区别...

typeof obj == "undefined"

对比

obj == undefined

是首选吗?我几乎总是使用 jQuery,第二个是 jQuery 独有的功能吗?

最佳答案

问题

obj === undefined 

如果 'obj' 标识符名称在(词法)环境(或任何外部环境)中不存在,将抛出错误(这反过来会破坏你的程序)。

顺便说一句,通过声明变量 (var x;) 或将属性分配给 window 对象 (window.x = ...;).

另一方面

typeof obj === 'undefined'

不会抛出(错误),因此是首选方法。


请注意,您无法在 JavaScript 中检查对象是否存在。 JavaScript 代码不直接处理对象,而是通过引用。如果给定的引用不指向对象并不意味着该对象不存在(它可能被不同的引用引用)。您可以做的是检查引用(如 obj 在您的情况下)是否指向对象值(或者首先是否存在这样的标识符名称)。

如果

typeof obj === 'undefined'

评估为 true,这可能意味着:

  • 名称'obj'不存在于词法环境或任何外部环境中,
  • 名称 'obj' 存在于词法环境链中(位于其中的某处),并且绑定(bind)到 undefined 值。

关于javascript - 在javascript中测试未定义的方法的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012653/

相关文章:

javascript - 将图像 + 数据 ajax post 发送到 ashx 处理程序

javascript - 将 Select2 与 flask-wtforms 一起使用

javascript - 定位上下文菜单

javascript - AngularJS 中的多条件过滤器

javascript - 将“加载更多”添加到使用 $.getJSON 从 Google 电子表格接收的数据输出中

jquery - 在同一页面内点击 anchor 标签显示内容

javascript - Jquery 仅推送对象唯一元素

javascript - 默认情况下,JavaScript 中的数组真的是 "sparsed"吗?

jquery - 元素的 CSS,在页面加载结束时还原?

javascript - 如何在 JavaScript 中将字符串中的 7 格式化为 '07'?