在另一个JS文件中调用具有相同名称的函数

时间:2013-02-08 04:15:33

标签: javascript function variables count

我在这里有点困惑......如果我有一个.js文件,其功能如下:

function myMain() {
    var count=0;
    count++;               
    myHelper(count);
    alert(count);
}

function myHelper(count) {
    alert(count);
    count++;
}

我还可以在另一个.js文件中调用另一个方法myHelper()吗?或者有没有其他方法可以将count变量从一个函数传递到另一个函数然后它将被调用到其他.js文件。你对这个有什么想法吗?谢谢!

3 个答案:

答案 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?