将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>
其他更复杂但只有在你打算重复这种行为时才可取是使用库或框架使include更加简洁,require.js就是的一个很好的例子
EDIT:在前面的例子中,我使用了带有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访问,因为你没有将变量绑定到任何特定的作用域,所以绑定到窗口objecy,即全局作用域"namespace"。
- 通过Ajax将JavaScript函数传递给PHP文件
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 如何在 javascript 文件函数中找到 Radnotification id
- 对另一个文件函数的引用
- 从代码隐藏调用.js文件函数
- 如何javascript调用iframe加载的文件函数
- Javascript外部文件函数赢得'我以前不工作
- 读取本地文本文件函数不返回字符串类型,而是返回一个void类型
- 如何使用javascript在同一位置编辑和保存计算机中的任何文本文件.函数调用时,
- 如何用javascript调用jar文件函数
- 从SharePoint 2013脚本编辑器调用外部javascript文件函数
- 优先使用JS文件函数而不是HTML文件
- 如何从页面后面的代码调用js文件函数
- 外部JS文件's函数在无限滚动后不加载
- 在HTML按钮点击事件上调用jquery文件函数
- 在Angular js控制器中调用外部js文件函数
- Webpack主javascript文件's函数不能在加载在页脚的js文件中访问
- 我的jquery文档准备函数不能识别外部js文件函数
- 调用selenium-ide中的js文件函数
- 在RegisterStartupScript方法中使用外部Javascript文件函数