是否可以在一个javascript文件中声明一个变量并在另一个javascript文件中使用它?

时间:2010-12-17 15:12:58

标签: javascript

如果我有一个javascript 文件

var myVariable = "Awesome variable";

和另一个javascript 文件

function printMyVariable() {
    document.writeln(myVariable);
}

printMyVariable方法能够识别myVariable吗?我在“否”中猜测,因为myVariable范围在第二个javascript文件中无法识别。所以,我想知道是否有人可以向我解释如果可能的话,需要做些什么来使魔术发生。 :)

感谢。

5 个答案:

答案 0 :(得分:5)

是的,只要具有变量声明的文件包含在使用它的文件之前,因为它都在同一个块中解析但是按顺序。

但这是一种非常糟糕的做法。

答案 1 :(得分:1)

可能因为myVariable将被定义为@ global scope,尽管它位于不同的文件中。但是请确保在定义变量后调用printMyVariable函数(包括脚本标记。)

答案 2 :(得分:1)

简单

JS具有平坦的范围,只有全局 1 和本地。 var使用当前范围。让var foo在全局范围内 - 您将从任何文件(没有名称空间或模块)获得全局变量。

进一步

有一个Global对象,全局变量成为它的属性。在浏览器环境中,window实现了Global,因此您的全局var将具有限定名称window.foo

“重新声明”

/* 
assuming browser environment
execution flow: top to bottom 
first file: (actually doesnt matter, becase its flat)
*/
var foo = "bar";
// equivalent to 
window.foo = "bar";

// second file:
var foo = 42;
// redeclared? no, because equivalent statement is
window.foo = 42;

1 仅用于说明目的,请参阅第二部分。

答案 3 :(得分:0)

只要在包含第一个文件后在第二个文件中调用该函数,就应该没问题。您引入了一个全局变量,该变量分配给DOM中的window对象,因此在您包含第一个文件后,window.myVariable将等于"Awesome variable"。如上所述,所有这些都是一个非常糟糕的主意。

答案 4 :(得分:0)

作为一个古老的perlie,我永远不会使用以'my'开头的变量作为全局变量 - 我的= perl in local :-)我同意这是不好的做法。

考虑到这一点的方式不是单独的文件,而是作为JavaScript文件的一个大文件按顺序连接。范围与该文件中的范围相同。实际上,这正是你缩小时所发生的......

相关问题