我在这里有点困惑......如果我有一个.js
文件,其功能如下:
function myMain() {
var count=0;
count++;
myHelper(count);
alert(count);
}
function myHelper(count) {
alert(count);
count++;
}
我还可以在另一个.js文件中调用另一个方法myHelper()
吗?或者有没有其他方法可以将count变量从一个函数传递到另一个函数然后它将被调用到其他.js文件。你对这个有什么想法吗?谢谢!
答案 0 :(得分:14)
当两个脚本文件都包含在同一页面中时,它们在相同的全局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)
答案 1 :(得分:-3)
如果您知道要覆盖某个方法,可以先将旧方法存储在变量中,然后通过该变量调用该函数的其他实现。
答案 2 :(得分:-4)
是的,你可以从任何其他js文件调用myHelper(),只要你在一个html或jsp页面中包含两个js文件
你可能想看看这个: Can we call the function written in one JavaScript in another JS file?