javascript - 作用域如何与 JavaScript include 一起工作?

标签 javascript

例如假设我的 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/

相关文章:

javascript - 模拟网页中的按钮单击

javascript - 如何使物体沿对 Angular 线和之字形移动?

javascript - 在 JavaScript 中检查字符串是否相等的正确方法是什么?

javascript - 将输入转换为小写

javascript - 缓存数据和数据绑定(bind) - AngularJs

javascript - 在预加载时如何使新窗口与加载指示器一起显示?

javascript - 调用函数不是函数

javascript - split() 不适用于仅 1 个值

php - 从 PHP 将数据集传递给 JavaScript 验证

javascript - 即使客户端关闭,Amqp、rabbit mq 和 socket.io 也会重新连接到队列