【问题标题】:typeof a === 'undefined' [duplicate]typeof a ==='未定义'[重复]
【发布时间】:2013-01-27 20:52:50
【问题描述】:

可能重复:
variable === undefined vs. typeof variable === “undefined”

假设undefined没有被篡改,下面是等价的吗?

typeof a === 'undefined'

a === undefined

?

[我问的原因是因为Parsley.js的作者似乎喜欢写'undefined' !== typeof someExpression。]

【问题讨论】:

  • 不,它们等效。
  • 任何使用参考规范类型(例如 typeof、del、lhs of =)的表达式 except 都将强制评估变量/属性。在此评估期间,可能会引发 ReferenceError。
  • 感谢您深入了解 Parsley 代码 :)

标签: javascript


【解决方案1】:

这两种方法几乎相同,除了一种:如果a 变量未定义为变量,typeof 不会引发 ReferenceError: a is not defined

说,typeof 方法更简单。

【讨论】:

    【解决方案2】:

    是的,如果undefined 未被篡改,它们是等效的。 typeof 优于直接与 undefined 比较的唯一原因是,undefined 可以重新定义为类似 undefined = 5 的任何其他内容。同样正如 VisioN 所指出的,当您不检查函数参数的上下文而是检查 a 是否为 defined globally 时,a 可以引发 ReferenceError。为了在全局上下文中直接与 undefined 进行比较时不会得到ReferenceError,您需要执行:

    window.a === undefined
    

    【讨论】:

      猜你喜欢
      • 2013-06-22
      • 2015-05-06
      • 2011-02-11
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多