我们可以调用用一个JavaScript在另一个JS文件中编写的函数吗?

2022-08-30 01:17:21

我们可以调用写入一个JS文件的另一个JS文件中的函数吗?任何人都可以帮我如何从另一个JS文件调用函数吗?


答案 1

只要在首次使用函数之前加载了包含函数定义的文件,就可以像在同一个 JS 文件中一样调用该函数。

文件1.js

function alertNumber(number) {
    alert(number);
}

文件2.js

function alertOne() {
     alertNumber("one");
}

断续器

<head>
....
    <script src="File1.js" type="text/javascript"></script> 
    <script src="File2.js" type="text/javascript"></script> 
....
</head>
<body>
....
    <script type="text/javascript">
       alertOne();
    </script>
....
</body>

另一种方式是行不通的。正如斯图尔特·韦克菲尔德(Stuart Wakefield)正确指出的那样。另一种方式也将起作用。

断续器

<head>
....
    <script src="File2.js" type="text/javascript"></script> 
    <script src="File1.js" type="text/javascript"></script> 
....
</head>
<body>
....
    <script type="text/javascript">
       alertOne();
    </script>
....
</body>

不起作用的是:

断续器

<head>
....
    <script src="File2.js" type="text/javascript"></script> 
    <script type="text/javascript">
       alertOne();
    </script>
    <script src="File1.js" type="text/javascript"></script> 
....
</head>
<body>
....
</body>

尽管在调用它时定义了它,但在内部它使用一个仍未定义的函数()。alertOnealertNumber


答案 2

上面的答案有一个错误的假设,即文件的包含顺序很重要。由于在调用 alertOne 函数之前,不会调用 alertNumber 函数。只要这两个文件都包含在 time alertOne 中,文件的顺序就无关紧要:

[HTML]

<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>

[JS]

// File1.js
function alertNumber( n ) {
    alert( n );
};
// File2.js
function alertOne( ) {
    alertNumber( "one" );
};
// Inline
alertOne( ); // No errors

或者可以按如下方式订购:

[HTML]

<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
    alertOne( );
</script>

[JS]

// File2.js
function alertOne( ) {
    alertNumber( "one" );
};
// File1.js
function alertNumber( n ) {
    alert( n );
};
// Inline
alertOne( ); // No errors

但是,如果您要执行此操作:

[HTML]

<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>

[JS]

// File2.js
function alertOne( ) {
    alertNumber( "one" );
};
// Inline
alertOne( ); // Error: alertNumber is not defined
// File1.js
function alertNumber( n ) {
    alert( n );
};

它只与执行时可用的变量和函数有关。定义函数时,它不会执行或解析其中声明的任何变量,直到随后调用该函数。

包含不同的脚本文件与在同一文件中按该顺序排列的脚本没有什么不同,但延迟脚本除外:

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

那么你需要小心。