Javascript函数,访问变量

Javascript functions, accessing variables

本文关键字:变量 访问 函数 Javascript      更新时间:2023-09-26
   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[]。(在上述函数之外)

要做你想做的,你只需要从你的函数中删除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
})()

只要在 file2.js之前包含file1.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.

您应该能够访问文件之间的任何全局变量。在您的示例中,您在函数中定义了returnLOB,因此无法访问,但您声称已全局定义的returnLOB将被两个文件访问。

这个问题以前也问过,所以请查看:

Javascript: Scope of a Variable跨不同Javascript文件