Javascript函数,访问变量
Javascript functions, accessing variables
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文件
相关文章:
- 如何从字符串变量访问对象属性
- 无法使用变量访问数据 JSON
- D3:使用变量访问绑定数组中的对象
- JavaScript 变量访问错误
- CanvasJS-访问变量-访问属性toString的权限被拒绝
- 如何使用javascript数据对象?如何通过变量访问条目
- 如何使用变量访问对象属性
- 使用变量访问对象的属性
- 如何使用包含对象键名的变量访问对象属性
- 为什么通过缓存变量访问 DOM 更快
- 将 PHP 变量访问到外部 JavaScript 文件中
- 使用变量访问 Javascript 中的对象信息
- 使用变量访问 JSON 属性(字符串)
- 如何在 yii 中从 javascript 变量访问文本字段输入
- 如何使用 javascript 变量访问模型属性
- 根据 HighCharts 对象的变量访问数组的元素
- 使用动态变量访问 Meteor 中另一个变量的值
- 如何通过绑定的控制器变量访问服务的属性
- Angular JS工厂和变量访问
- 使用变量访问对象的值