javascript – 为什么我们用`window`预先设置全局变量?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 为什么我们用`window`预先设置全局变量?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1452字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 为什么我们用`window`预先设置全局变量?](/upload/InfoBanner/zyjiaocheng/808/71dc85ebc7014222ad6bd1953c986134.jpg)
在我看到的很多代码示例中,全局变量(如innerWidth,onresize,navigator等)分别写为window.innerWidth,window.onresize,window.navigator.
为什么这些全局变量中的一些以窗口为前缀.和其他文件和控制台一样,通常没有前置?
编辑:
我知道OOP如何工作以及我正在访问窗口对象的各种属性.我不是JavaScript的新手.如果我的问题可能不清楚,我很抱歉.我已经在JS编程了多年,但从未质疑过这个约定,因此我的问题.
从本质上讲,我在问为什么我们不放窗口.在文档之前,但是我们把它放在innerWidth之前.这只是一个清晰的问题吗?从理论上讲,我不应该在没有窗口的情况下引用任何全局变量.前缀并没有问题?
解决方法:
这很不幸,但是浏览器中的窗口引用了一个对象,它代表了两个逻辑上截然不同的概念:
>一个Window的实例,一个具有良好定义属性的对象,如Window.innerWidth,逻辑映射到浏览器的窗口(或者更确切地说是今天的选项卡,但是这个区别对于脚本是隐藏的)
> global object将所有全局变量作为属性附加到其中
在语义上,不使用Window概念与Window概念无关的前缀更加清晰.
现在请注意,当您引用像myThing这样的全局特定变量时,这会引入一个问题:很难知道您是故意引用全局变量还是在某个中间范围内声明它(或者您是否忘记声明变量)与var).这导致你不会使用窗口的情况.仅适用于Window实例的属性,但也适用于特定的全局变量.当然,在实践中,您将尽可能避免全局变量.
不用窗口加前缀.当你忘记var声明或库导入时,还有一个优势,就是让你的代码以一种非常微妙的方式快速失败(这比以难以调试的方式在生产中失败更好):
window.undeclaredVariable // no error, just an undefined value
undeclaredVariable // reference error
通过区分这两个概念(类似于global或root,如节点),JavaScript可能会更好.
内容总结
以上是互联网集市为您收集整理的javascript – 为什么我们用`window`预先设置全局变量?全部内容,希望文章能够帮你解决javascript – 为什么我们用`window`预先设置全局变量?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。