我在另一个文件中调用函数时遇到麻烦,而在第二个文件中调用函数必须在第一个文件中调用另一个函数。怎么可能? 在我的例子中,我首先调用在File2.js中的Printer1函数,然后在File2.js中调用在File1.js中声明的Printer2(但是我没有在File2.js中包含File1.js。但是我在File1.js(包括File2.js)
File1.js
var data1="Hi";
Printer1(data1);
var Printer2(){
document.write(data1);
}
File2.js:
var Printer(data1){
document.write(data1);
Printer2();
}
另外我想知道我是否可以在页面开头包含File2.js,或者在调用Printer1之前必须包含一行?
答案 0 :(得分:3)
你的javascript将按照加载的顺序执行,除了提升,如果使用正确的语法,函数可以在编写之前使用。
File 1:
function foo() {
alert("I'm foo!");
}
File 2:
foo(); //alerts "I'm Foo!"
基本上,有两个文件,如
与将它们组合在一起并将它们包含在一起相同。如果它的工作方式如此,除了吊装之外,它也会单独工作。
这就是吊装的工作原理:(这必须在同一个文件中并且在同一范围内)
foo(); //alerts "I'm foo!" even though we haven't told it to yet.
function foo() {
alert("I'm foo!");
}
这是有效的,因为以这种方式定义的函数将被“提升”到该范围内执行的开始。
不会工作:
foo(); //undefined!!
var foo = function() { //doesn't get hoisted!
alert("I'm foo!");
}
如果要悬挂,请使用其他语法!
你可能想知道的一件事是,但我无法弄清楚你的问题(令人困惑的措辞,哈哈)
如果文件1具有使用文件2中的功能的功能怎么办?
在这种情况下,您将无法使用文件1中的函数,因为文件2中的函数将在文件1执行时未定义,但您可以使用文件2中的文件1函数(即使在文件2中)如果你把它吊起来就开始了。)
像这样:
File 1:
function foo() {
bar();
}
foo(); //bar is undefined! error!
File 2:
foo(); //works!! bar is hoisted and therefore defined already for "foo" to use
function bar() {
alert('from file 2!');
}
答案 1 :(得分:0)
首先,你有var应该具备的功能。您也不应该使用document.write。检查this。 JS应该看起来像:
file1.js:
var data1="Hi";
Printer1(data1);
function Printer2(){
document.write(data1);
}
file2.js
function Printer1(data1){
document.write(data1);
Printer2();
}
为了使file2中的函数可以调用,你需要你的标记看起来像这样:
<body>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
</body>