js的全局变量的问题

pegnjw 2013-06-13 05:28:22
我在A.js中定义一个数组,然后想在B.js中读取这个数组中的值,但是没法读取到。

A .js中的代码:

var positions = new Array();
function OnLButtonUp() {
try {
var SGWorld = _$SGCreateTEObj();
var pos = SGWorld.Navigate.GetPosition(3);
positions.push(pos);
//alert(positions.length);这里用alert调试的话,数组的值是有的
}
catch (e) {
alert('温馨提示:' + 'OnLButtonUp()方法存在'+e.name+'异常, '+e.message);
}
}

B.js中想读取:

var j = 0;
function GetBack() {
debugger;
var SGWorld = _$SGCreateTEObj();
var stepLength = positions.lenght - 1;//这里报错,说positions没有定义
if (j < positions.length) {
SGWorld.Navigate.JumpTo(positions[stepLength - 1 - j]);
j++;
}
}



之前我也遇到过这样的问题。发现全局变量不起作用。这是什么原因呢?是我var positions = new Array();这个定义的不对吗?
...全文
253 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sb梁先生 2013-06-18
  • 打赏
  • 举报
回复
引用 6 楼 kevinwon1985 的回复:
没这个问题 你的positions.lenght写错了,是length
神人。不过楼主。实现不了。不会看一看哪里报错了吗?楼主该反思l
熏肉大饼 2013-06-16
  • 打赏
  • 举报
回复
我也遇到过这样的问题 你先 var a,b;//声明; 再写一个function func(){ a=new Array(); //声明; } 最后在<body onload="func()">加载这个函数; 原因:你的a,b在全局变量赋的值还没有加载,这样你查找到的结果是null,你先声明在赋值 将赋值在加载以后,就可以解决了,因为加载的顺序问题;
RickzdWen 2013-06-15
  • 打赏
  • 举报
回复
6楼霸气正解
licip 2013-06-15
  • 打赏
  • 举报
回复
你先A.js然后再B.js 如果没有写错,那就是可以的。
卑微的爱情 2013-06-15
  • 打赏
  • 举报
回复
6楼的神话,小弟服了
豪情 2013-06-14
  • 打赏
  • 举报
回复
楼上真乃神人也。
卧勒个去 2013-06-14
  • 打赏
  • 举报
回复
6楼v5霸气
地狱羔羊 2013-06-13
  • 打赏
  • 举报
回复
没这个问题 你的positions.lenght写错了,是length
pegnjw 2013-06-13
  • 打赏
  • 举报
回复
引用
把var positions = new Array();放本文件试试
这个意思是指把这个定义放在B.js里吗?这样不行,这样相当于重新定义了positions数组那么她肯定是空的。
pegnjw 2013-06-13
  • 打赏
  • 举报
回复
我用断点测试了,代码是先执行A.js的,后面才是运行B.js.
  • 打赏
  • 举报
回复
把var positions = new Array();放本文件试试
未知数 2013-06-13
  • 打赏
  • 举报
回复
注意代码执行时间,确认代码执行的先后顺序就知道了
SK猫 2013-06-13
  • 打赏
  • 举报
回复
会不会文件载入先后问题

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧