如何定义全局数组
How to define Global Arrays?
代码示例:
<script>
var data = new Array();
data[0] = 'hi';
data[1] = 'bye';
</script>
<script>
alert(data[0]);
</script>
这将给出以下错误:data is not defined
你如何让这样的东西工作?特别是如果第一个<script>
块由 ajax 加载到页面上,而第二个块正在从中工作。 jQuery解决方案是可以接受的。
New
不是关键字。
用:
var data = new Array();
或者,更简洁地说:
var data = [];
编辑后,您提到第一个脚本块是异步加载的。您的代码将无法按编写的方式工作。 data
加载到页面上后就是一个全局变量。您需要使用回调模式来正确执行代码。
由于您尚未发布异步代码,因此我不打算提供callback
示例。不过,一个快速的解决方案如下:
var interval = setInterval(function(){
if(data) {
/* ... use data ... */
clearInterval(interval);
}
}, 500);
要创建全局变量,只需从语句中省略"var"。当您省略"var"时,您实际上是在窗口命名空间中创建变量。
所以,zz = 1
实际上是window.zz = 1
如果你真的想,你可以明确地说
window.data = new Array(); //remember that new should be lowercase.
但无论如何,你可以通过说
data = ['hi','bye'];
alert(data);
如果你
使用的是jQuery,也许你应该尝试.getScript()
而不是使用.html()
;
// in separate file
data[0] = 'hi';
data[1] = 'bye';
// in main file
var data = [];
$.getScript(url).done(function() {
alert(data[0]);
}).fail(function() {
// handle error
});
<script>
data = [];
data[0] = 'hi';
data[1] = 'bye';
</script>
<script>
alert(data[0]);
</script>
使用这个,删除变量使变量全局
相关文章:
- node.js全局数组与redis
- 是socket.io异步的-我需要锁定全局数组/变量吗
- 如何在另一个函数调用中设置全局数组值
- 带有jquery .push的Javascript全局数组在备用函数中返回空数组
- 将对象插入到全局数组
- 从多个API请求推送到全局数组
- 如何在 JavaScript 中声明和初始化全局数组
- 无法使用 JavaScript 将值读入全局数组变量
- Javascript 全局数组无缘无故地变为未定义
- 使用Phonegap全局数组的Javascript不起作用
- 将 JSON 文件读取到对象的全局数组中 - 范围和同步问题
- 节点.js不能使用 promise、Mongoose 和 GET 请求推送到全局数组
- Javascript 全局数组在 JSON 结果函数中不可见
- 如何定义全局数组
- 新数组覆盖全局数组
- mysql导致javascript全局数组
- 从Jquery$.getJSON方法获取数组的全局数组到REUSE数组
- Javascript将Object推送到全局数组会覆盖以前的值
- 对影响作为参数传递的全局数组的函数参数使用.shift()
- 使用THRE.JS对象的全局数组的Javascript内存管理