[英]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.