Javascript函数,访问变量

时间:2014-05-14 17:44:44

标签: javascript jquery

   listofLOBs: function(data) { //passing data 
        var returnLOB = [];
        console.log(data);
        for (var i1r= 0; i1r < data.length; i1r++) {
                var lob = new LOBslist();
                lob.name = data[i1r].name;
                lob.id = data[i1r].id;
                returnLOB.push(lob); // storing in returnLOB
            }
        console.log(returnLOB[1].name); 
        $('#mainWrapper').find('select[name="lob-select"] option:selected').text(returnLOB[1].id); //using the returnLOB's object data to populate dropdown
        return returnLOB; 
    }

在上面的函数中,我将对象存储在returnLOB数组中,并在函数本身内使用它来填充下拉列表。

但是说这是file1.js,我想从file2.js访问returnLOB的值我该怎么做?提前谢谢。

注意:我也在全局声明了returnLOB []。(在上面的函数之外)

3 个答案:

答案 0 :(得分:0)

要执行您想要的操作,您只需要从函数中删除var,这样就不会创建一个局部变量来隐藏您在另一个文件中创建的全局变量。

listofLOBs: function(data) {
    // Here you're setting a global instead of a local
    returnLOB = [];

您可能知道这是一个坏主意,如果您重新构建代码以便不需要全局

会更好

一个简单的解决方案是将所有需要变量的代码放在一个具有自执行功能的位置,这样您的全局只会暴露给需要它的代码

(function(){
    var returnLob;

    ... contents of file 1, which write to returnLob

    ... contents of file 1, which read returnLob

})()

答案 1 :(得分:0)

只要您在 file1.js之前添加file2.js ,它就会有效。以jQuery为例 - 或任何JS库 - 如果在代码之前包含其源文件,则可以使用其中的函数。

您希望按上述顺序包含文件,然后您只需调用文件2中的函数(listofLOBs())。

此外,函数中的变量声明不正确。

var returnLOB = [];     // You're declaring a global.

应该是

returnLOB = [];      // because the variable is already declared - you just want a local copy.

希望这有帮助。

答案 2 :(得分:0)

您应该能够访问文件之间的任何全局变量。在您的示例中,您在函数内部定义了returnLOB,以便无法访问,但您声明已全局定义的函数将可由两个文件访问。

这也是之前被问过的,所以请查看:

Javascript: Scope of a Variable across different Javascript files