例如假设我的 HTML 中有以下内容
<script src="/socket.io/socket.io.js"></script>
脚本定义了一个名为 socket 的变量。紧接着我有以下内容
<script src="/javascripts/script.js" type="text/javascript"></script>
在 script.js 中,我尝试访问套接字并收到未定义的错误。但是,如果我使用内联脚本,我可以访问该变量。如何从 script.js 中访问“套接字”?
最佳答案
JavaScript 本身没有“包含”。
在 JS 文件的顶层声明的任何变量将在文件加载后立即在 全局范围 中可用,即在 <script>
点。使用标签。
请注意,脚本加载了 defer
<script>
上的属性标签可能不会立即加载,因此其中声明的任何变量都不会立即可用。
用 var
声明的变量回调函数内部关键字不会出现在全局范围内。所以在这段代码中:
var a = 1;
$(document).ready(function() {
var b = 1;
});
a
将在全局范围内,但 b
不会的。
而在这段代码中:
$(document).ready(function() {
c = 1;
});
c
将在全局范围内(因为它没有用 var
关键字声明)但直到回调函数被调用才。
关于javascript - 作用域如何与 JavaScript include 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9666541/