从另一个javascript文件调用javascript函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个javascript文件调用javascript函数相关的知识,希望对你有一定的参考价值。

<html>
<head>
<script src="./first.js"></script>
<script src="./second.js"></script>
</head>
</html>

从first.js文件中,我想调用second.js中的函数

secondFun(); //calling function from second.js file

这是second.js文件

function secondFun(){
console.log('second function called!!')
}
答案

tl; dr:在依赖它们之前加载您的依赖项。


您无法调用尚未加载的函数。

在第一个文件运行完所有顶级语句之后,才会加载第二个JS文件中定义的函数。

颠倒脚本元素的顺序。

另一答案

除非在同一文件中定义了函数或在尝试调用它之前加载了函数,否则无法调用该函数。

除非函数与尝试调用它的范围相同或更大,否则无法调用函数。

你在first.js中声明了函数fn1,然后在第二个你可以有fn1();

1.js:

function fn1 (){
    console.log('second function called!!')
}

2.js:

fn1();

index.html:

<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>

它工作得很好:)

另一答案

在ES6中使用import/export

second.js

export function secondFun(){
console.log('second function called!!')
}

first.js

import { secondFun } from 'second.js';

然后在第一个文件中调用secondFun

另一答案

在second.js

document.addEventListener("DOMContentLoaded", function(event) {
  function secondFun(){
    console.log('second function called!!')
    }
});

没有测试但是假设工作

即使你的js没有正确的队列功能顺序,这个函数也会等到所有加载的文件都执行完毕

另一答案

您正在尝试访问我尚未提供的功能。所以,你不能在这种情况下使用。但你能做什么:

  1. 颠倒顺序。
  2. 在脚本文件上使用defer属性。

1.

您必须先加载您的功能才能使用它们。因此,颠倒脚本的顺序。

2. Source

defer属性是很少使用的属性之一。正如您可以通过属性的名称所知,defer指示脚本标记的内容在页面加载之前不会执行。

Demo@plnkr

以上是关于从另一个javascript文件调用javascript函数的主要内容,如果未能解决你的问题,请参考以下文章

从另一个应用程序调用 iOS Safari 时会触发啥 Javascript 事件

使用 evaluateJavaScript(..) 调用 javascript 函数,以读取应用程序包中的文本文件

Django - 如何将 javascript 变量从另一个文件加载到模板

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

从另一个 .swift 文件调用 ViewController 函数

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