在被调用函数调用第一个文件中的另一个函数时调用文件中的函数

时间:2013-11-17 17:18:06

标签: javascript jquery

我在另一个文件中调用函数时遇到麻烦,而在第二个文件中调用函数必须在第一个文件中调用另一个函数。怎么可能? 在我的例子中,我首先调用在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之前必须包含一行?

2 个答案:

答案 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>