如何使用JavaScript进行范围界定?

时间:2012-03-12 11:54:22

标签: javascript

例如,假设我的HTML

中有以下内容
<script src="/socket.io/socket.io.js"></script>

该脚本定义了一个名为socket的变量。紧接着我有以下

<script src="/javascripts/script.js" type="text/javascript"></script>

在script.js中,我尝试访问套接字并获取未定义的错误。但是,如果我使用内联脚本,我可以访问该变量。如何从script.js中访问“socket”?

2 个答案:

答案 0 :(得分:2)

JavaScript本身没有“包含”。

在加载文件后立即在全局范围中声明在JS文件顶层声明的任何变量,即在使用<script>标记的位置。

请注意,defer标记上加载了<script>属性的脚本可能不会立即加载,因此其中声明的任何变量都不会立即可用。

使用var关键字内部回调函数声明的变量不会出现在全局范围内。所以在这段代码中:

var a = 1;
$(document).ready(function() {
    var b = 1;
});

a将在全球范围内,但b不会。

在此代码中:

$(document).ready(function() {
    c = 1;
});

c 处于全局范围内(因为它未使用var关键字声明),但不会在调用回调函数之前 >

答案 1 :(得分:0)

您在哪里定义这些脚本?它们是否在头上?如果是这样,您应该能够在脚本之间访问变量......