有关于js中的ReferenceError问题,在《你不知道的Javascript》一书的第一章中有提到:
如果RHS查询在所有嵌套的作用域中遍寻不到所需的变量,引擎就会抛出 ReferenceError 异常。
那请问,下面的两个例子有啥区别呢?两者都是因为在作用域中找不到所需的变量,但为啥一个是undefined,一个是ReferenceError。
<script>
console.log(window.a); // undefined
console.log(a); // ReferenceError异常
</script>
第一行代码里的a是作为window的property引用的,不会报错,事实上查询window上的任何property(不管property是否真的存在window上)都不会报错.
第二行代码里的a相当于global varibal, 使用之前必须要声明(declaration),否则会报错。