查找一个未声明变量时,如a,与window.a的区别,为啥window.a不报错
7条回答 默认 最新
- 陈田田 2016-11-29 07:07关注
先来看下代码:
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> window.onload = function(){ console.log('打印window.a结果为:' + window.a); console.log('打印a' + a); } </script> </body> </html>
按你所说,我们在未进行任何定义的情况下,分别打印window.a和a,结果如下:
window.a结果是undefined,因为你想打印的是window对象的a属性,而window对象是JavaScript默认自带的对象,它是存在的,只不过是window对象中的属性a是不存在的。
但是如果你想打印a,那么a会认为是一个变量,可是在我们的代码中并没有声明a,所以会捕获一个参数引用异常。这两种结果的主要原因是因为window对象是默认存在的对象,如果你再打印一下b.a,
代码如下:<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> window.onload = function(){ console.log('打印window.a结果为:' + window.a); console.log('打印b.a结果为:' + b.a); } </script> </body> </html>
结果提示我们说b没有定义,而根本没有提到我们引用的后面的.a。
综上所述,原因就是window对象比较特殊。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报