当提供未声明的变量标识符时,typeof如何绕过ReferenceError?

时间:2015-03-19 21:37:54

标签: javascript

foo; // ReferenceError: foo is not defined

typeof(foo); // undefined

typeof在提供未声明的变量标识符时如何规避ReferenceError?这只是JavaScript解释器" magic"还是可以用用户土地概念来解释?

1 个答案:

答案 0 :(得分:7)

不,这在用户土地概念中无法解释 - 它是魔法"魔法"如果你愿意的话。

EcmaScript使用Reference specification type来解释这样的情况。这些引用用于描述赋值的语义,method callseval等等。通常,会调用GetValue algorithm来取消引用它们(例如,在表达式语句的求值中),并且当引用无法解析时,这会抛出ReferenceError

相比之下,typeof operator不仅仅是GetValue,还有一个特殊情况来处理这些未声明的变量引用:

  
      
  1. 如果Type(val)参考,那么

         

    一个。如果IsUnresolvableReference(val)true,请返回"undefined"

  2.