3 回答

TA贡献1789条经验 获得超8个赞
只需在函数范围之外的global.js中定义变量:
// global.js
var global1 = "I'm a global!";
var global2 = "So am I!";
// other js-file
function testGlobal () {
alert(global1);
}
为确保此方法有效,您必须先包含/链接到global.js,然后再尝试访问该文件中定义的任何变量:
<html>
<head>
<!-- Include global.js first -->
<script src="/YOUR_PATH/global.js" type="text/javascript"></script>
<!-- Now we can reference variables, objects, functions etc.
defined in global.js -->
<script src="/YOUR_PATH/otherJsFile.js" type="text/javascript"></script>
</head>
[...]
</html>
当然,如果您不想让js文件的加载中断初始页面加载,则可以在结束<body> -tag之前的脚本标签中进行链接。

TA贡献2016条经验 获得超9个赞
推荐的方法是:
window.greeting = "Hello World!"
然后,您可以在任何函数中访问它:
function foo() {
alert(greeting); // Hello World!
alert(window["greeting"]); // Hello World!
alert(window.greeting); // Hello World! (recommended)
}
首选此方法有两个原因。
目的是明确的。var关键字的使用很容易导致声明全局变量vars,而全局变量原本是本地变量,反之亦然。对于许多Javascript开发人员来说,这种变量作用域是一个混淆点。因此,作为一般规则,我确保所有变量声明都以关键字var或prefix开头window。
您还可以标准化语法以这种方式读取变量,这意味着局部作用域var不会破坏全局变量,var反之亦然。例如,这里发生的事情是模棱两可的:
greeting = "Aloha";
function foo() {
greeting = "Hello"; // overrides global!
}
function bar(greeting) {
alert(greeting);
}
foo();
bar("Howdy"); // does it alert "Hello" or "Howdy" ?
但是,这更加简洁,而且不易出错(您实际上不需要记住所有变量作用域规则):
function foo() {
window.greeting = "Hello";
}
function bar(greeting) {
alert(greeting);
}
foo();
bar("Howdy"); // alerts "Howdy"

TA贡献1818条经验 获得超7个赞
你试过了吗?
如果您这样做:
var HI = 'Hello World';
在中global.js。然后执行:
alert(HI);
在js1.js它会很好。您只需要global.js在HTML文档的其余部分之前添加。
唯一的问题是您必须在窗口范围内(而不是在任何函数内)声明它。
您可以修改var零件并以这种方式创建它们,但这不是一个好习惯。
添加回答
举报