两个JS之间的函数互相调用方式

作者:辰小白 时间:2024-04-10 10:39:45 

两个JS之间的函数互相调用

这个问题是我在工作中用到的一个方法 因为要做封装

所以想到能不能在一个js中引用另一个js中的function

这样的话能大大的减少代码量

话不多说 先上代码

首先要在html页面引入两个js文件

两个JS之间的函数互相调用方式

1.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title> </title>
</head>
<script src="1.js"></script>
<script src="2.js"></script>
<body>

</body>
</html>

1.js

两个JS之间的函数互相调用方式

function a(){
   alert(1);
}

2.js

两个JS之间的函数互相调用方式

a();

这样2.js就可以直接调用1.js中的a函数了

当然这样只是很简单的方法 下面写一个闭包中的方法(当然也很简单啦~~)

1.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title> </title>
</head>
<script src="1.js"></script>
<script src="2.js"></script>
<body>

</body>
</html>

1.js

两个JS之间的函数互相调用方式

var dianji;
(function(){
dianji = {
       a:function(){
           alert(1);
       }
}
})()

这里的1.js是一个对象函数而且还是闭包的形式,所以我们要把dianji这个变量提升到全局。这样在2.js中才能调用这个a函数 不然回报变量未定义的错误。

想要js之间互相调用function,那么函数就必须是全局的

2.js

两个JS之间的函数互相调用方式

dianji.a();

不同JS文件之间函数的相互调用

当我们使用JavaScript写一个复杂界面的业务逻辑时,经常会把所有的函数写在同一个JS文件中。然而随着功能的不断增加,这个JS文件会变得又臭又长,所有的功能像一团乱麻一样交织在一起,自己都不想回头看。为了避免这种情况的发生,我们应该在开始编码的时候就对不同的功能进行封装(即:将不同的业务逻辑写在不同的JS文件中),进而降低代码的耦合性。

因此,就会出现不同JS文件之间函数的相互调用问题。

调用方法方法很简单:我们只需将不同的JS文件在同一个html文件中引用,即可在任一JS文件中调用其他JS文件中的封装的函数了。

根据调用函数位置的不同,我们可以将函数调用方式分为全局调用和局部调用两类。

需要注意的是:不同的调用方式,细节上稍有区别。

1、全局调用

所谓全局调用,就是在函数外部调用其他JS文件中封装的函数。

(1)被调用的JS文件先引用

例如:test.html文件

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>test</title>
</head>
<body>
   <script src="a.js"></script>
   <script src="b.js"></script>
</body>
</html>

注:使用VS Code新建html文件,输入&ldquo;html:5&rdquo;,回车即可生成HTMl文件的框架。

  • a.js

function a()
{
   alert("a.js is loading");
}
  • b.js

a();
function b()
{
   alert("b.js is loading");
}

刷新界面,输出:&ldquo;a.js is loading&rdquo;,如下图所示。

两个JS之间的函数互相调用方式

(2)被调用的JS文件后引用

例如:保持test.html文件不变:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>test</title>
</head>
<body>
   <script src="a.js"></script>
   <script src="b.js"></script>
</body>
</html>

注:使用VS Code新建html文件,输入&ldquo;html:5&rdquo;,回车即可生成HTMl文件的框架。

  • a.js修改为:

b();
function a()
{
   alert("a.js is loading");
}
  • b.js修改为:

function b()
{
   alert("b.js is loading");
}

刷新界面,此时会报错b()函数未定义,如下图所示。

两个JS之间的函数互相调用方式

因此,全局调用时,被调用的JS文件要先引用。

2、局部调用

所谓局部调用,就是在函数内部调用其他JS文件中封装的函数。

将test.html修改为:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>test</title>
</head>
<body>
   <script src="a.js"></script>  
   <script src="b.js"></script>
   <input type="button" value="测试" onclick="a1()"/>
</body>
</html>

注:使用VS Code新建html文件,输入&ldquo;html:5&rdquo;,回车即可生成HTMl文件的框架。

  • a.js修改为:

function a1()
{
   alert("function a1 run success.");
   b();
}

function a2()
{
   alert("function a2 run success.");
}
  • b.js修改为:

function b()
{
   alert("function b run success.");
   a2();
}

点击&ldquo;测试&rdquo;按钮,此时会依次输出:&ldquo;function a1 run success.&rdquo;,&ldquo;function b run success.&rdquo;,&ldquo;function a2 run success.&rdquo;。

由此可见,局部调用时,引用不分先后,想在哪调就在哪调。

心得

若采用全局调用的方式,则被调用的JS文件要先引用;若采用局部调用的方式,则引用不分先后,想在哪调就在哪调。

来源:https://blog.csdn.net/qq493820798/article/details/81216090

标签:JS,函数,互相调用
0
投稿

猜你喜欢

  • python读取和保存图片5种方法对比

    2022-05-27 23:54:32
  • Go语言Grpc Stream的实现

    2023-08-07 06:19:23
  • 用ajax实现的自动投票的代码

    2023-08-24 16:35:07
  • Python实现绘制M2货币供应率曲线

    2023-07-31 04:30:43
  • pythonfor循环中range与len区别

    2023-06-22 03:17:10
  • Python画图工具Matplotlib库常用命令简述

    2021-10-11 07:28:07
  • DOM_window对象属性之--clipboardData对象操作代码

    2011-02-05 10:49:00
  • 解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题

    2023-11-11 10:38:14
  • golang 对私有函数进行单元测试的实例

    2024-05-13 10:43:54
  • 文本框textarea限制输入文字个数的方法

    2008-01-28 13:02:00
  • 5招优化MySQL插入方法

    2009-04-02 10:49:00
  • python机器学习实现神经网络示例解析

    2022-10-24 03:45:09
  • 纯CSS圆角框

    2009-12-11 18:57:00
  • python实现登录密码重置简易操作代码

    2022-12-08 13:34:43
  • python 实现语音聊天机器人的示例代码

    2021-03-24 14:36:07
  • 如何保持Oracle数据库的优良性能

    2024-01-14 18:05:32
  • 数据库清除日志文件(LDF文件过大)

    2024-01-14 04:05:36
  • PHP输出JSON格式数据方式

    2023-06-24 06:39:09
  • 胜过语言的图形符号

    2009-05-06 12:43:00
  • golang并发安全及读写互斥锁的示例分析

    2024-02-13 14:21:45
  • asp之家 网络编程 m.aspxhome.com