繁体   English   中英

将javascript变量从一个函数/文件传递到另一个

[英]Passing javascript variables from one function/file to another

我有一个函数,其中包含很多变量和非常大的数组。 这使得该功能非常大且难以使用。 如何在另一个文件中定义变量/数组并在此函数中使用它们?

例:

DoStuff.js:

function genList(){
    var listData = [

    //lots of inner arrays and data

    ]

    var dataItem = "value";//50 of these

    //do stuff with the data
}

我正在尝试做的是:

ExternalData.js:

var listData = [

//lots of inner arrays and data

]

var dataItem = "value";//50 of these

DoStuff.js:

function genList(){

//call variables/arrays from ExternalData.js

//do stuff
}

注意: JQuery在这里适用,但是我不希望为这么小的东西调用任何其他库。

我将在对象中定义所有变量,例如:

var obj = {
   array_one: ['x', 'y'],
   some_value: 'z'
}

此方法的优点是为所有变量创建一种名称空间,从而使您不必覆盖值。

然后使用某种include方法将该对象用于我的代码中。

一种简单的方法是将脚本添加到您正在编写的脚本之前,如下所示:

<script type="text/javascript" scr="file_with_object.js"></script>

如果您要重复这种行为,则其他更复杂但更可取的建议是使用库或框架使内容更简洁, require.js是一个很好的示例

编辑 :在前面的示例中,考虑到代码是在全局范围内编写的,我将对象与var一起使用,我认为最好使用window.obj = {}来确保变量是全局的。 而且,仅作记录,您定义的任何变量(例如window.somevariable)都将是全局变量。 定义全局变量后,您可以在代码中的任何位置(定义发生后)使用它。 命名空间是正确的选择。

编辑2 :我认为这篇文章更多地是关于范围而不是包括。 当您以这种方式声明变量时: var some_variable; 您是说要将该变量绑定到当前作用域。 因此,如果您在函数内执行此操作,则该变量将“存在”于该函数内:

var some_var = 10;
function(){
   var some_var = 5;
   console.log(some_var) // 5
}

console.log(some_var) // 10

但是,如果在两种情况下都声明了不带var的变量,那么您将是第一次使该变量成为全局变量,而第二次则覆盖其值:

    some_var = 10;
    function(){
       some_var = 5;
       console.log(some_var) // 5
    }
    console.log(some_var) // 5

并且总是声明一个不带var的变量,该变量可通过window.variablename进行访问,因为您没有将变量绑定到任何特定范围,所以将绑定绑定到window objecy,即全局范围“命名空间”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM