0

考虑以下代码:

//the var Test has NOT been declared yet

console.log((typeof Test)); // "undefined"
console.log(Test); //"Uncaught ReferenceError: Test is not defined"

为什么第二个 console.log 语句会抛出 ReferenceError 而第一个显示 undefined。

4

1 回答 1

5

因为 test 是未定义的。

首先,console.log您要求系统告诉您变量的类型。因此,它通过当前作用域链查找对该变量的引用,以便推断其类型。

当它没有找到变量时,它接收undefined原语。我相信你已经猜到了,它有一种类型undefined

第二次要求它打印出未定义变量的值。由于未定义变量(在当前作用域链中没有对其的引用),这是您尝试访问不存在的数据的错误,而不仅仅是推断其类型。

于 2014-03-10T01:17:49.800 回答