[英]Calling a function with same name in another JS file
我在这里有点困惑......如果我有一个带有这样功能的.js
文件:
function myMain() {
var count=0;
count++;
myHelper(count);
alert(count);
}
function myHelper(count) {
alert(count);
count++;
}
我还可以在另一个.js文件中调用另一个方法myHelper()
吗? 或者有没有其他方法可以将count变量从一个函数传递到另一个函数然后它将被调用到其他.js文件。 你对这个有什么想法吗? 谢谢!
更新:现在你应该更喜欢在带有type="module"
的<script>
标签中使用ES6 import
/ export
,或者通过webpack等模块捆绑器 。
当两个脚本文件都包含在同一页面中时,它们在相同的全局JavaScript上下文中运行,因此这两个名称将相互覆盖。 所以不,你不能在具有相同名称的不同.js文件中使用两个函数,并在编写它们时访问它们。
最简单的解决方案是重命名其中一个功能。
更好的解决方案是使用命名空间模块化编写JavaScript,以便每个脚本文件将尽可能少的(最好是1个)对象添加到全局范围,以避免单独脚本之间的命名冲突。
在JavaScript中有很多方法可以做到这一点。 最简单的方法是在每个文件中定义一个对象:
// In your first script file
var ModuleName = {
myMain: function () {
var count=0;
count++;
myHelper(count);
alert(count);
},
myHelper: function (count) {
alert(count);
count++;
}
}
在以后的脚本文件中,调用函数ModuleName.myMain();
更流行的方法是使用自我评估功能,类似于以下内容:
(function (window, undefined) {
// Your code, defining various functions, etc.
function myMain() { ... }
function myHelper(count) { ... }
// More code...
// List functions you want other scripts to access
window.ModuleName = {
myHelper: myHelper,
myMain: myMain
};
})(window)
如果您知道要覆盖方法,则可以先将旧方法存储在变量中,然后通过该变量调用该函数的其他实现。
是的,只要在一个html或jsp页面中包含两个js文件,就可以从任何其他js文件调用myHelper()
你可能想看看这个: 我们可以在另一个JS文件中调用用一个JavaScript编写的函数吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.