异常-错误信息 - 有关javascript中的referenceerror异常问题
PHPz
PHPz 2017-04-11 10:47:44
[JavaScript讨论组]

有关于js中的ReferenceError问题,在《你不知道的Javascript》一书的第一章中有提到:

如果RHS查询在所有嵌套的作用域中遍寻不到所需的变量,引擎就会抛出 ReferenceError 异常。

那请问,下面的两个例子有啥区别呢?两者都是因为在作用域中找不到所需的变量,但为啥一个是undefined,一个是ReferenceError。

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

第一行代码里的a是作为window的property引用的,不会报错,事实上查询window上的任何property(不管property是否真的存在window上)都不会报错.

第二行代码里的a相当于global varibal, 使用之前必须要声明(declaration),否则会报错。

伊谢尔伦

這就是變量提升(即在es5標準下,在定義之前調用變量,會出現變量提升undefined),由於在es5裡面只有全局作用域和函數作用域,在瀏覽器環境裡面你的a和window.a是等價的,這樣寫都是undefined.

Ps:Es6有塊作用域,使用let代替var,可以解決這種困擾了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号