我在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();这个定义的不对吗?
js JavaScript全局变量

解决方案 »

  1.   

    把var positions = new Array();放本文件试试
      

  2.   

    我用断点测试了,代码是先执行A.js的,后面才是运行B.js.
      

  3.   

    这个意思是指把这个定义放在B.js里吗?这样不行,这样相当于重新定义了positions数组那么她肯定是空的。
      

  4.   

    没这个问题
    你的positions.lenght写错了,是length
      

  5.   

    你先A.js然后再B.js
    如果没有写错,那就是可以的。
      

  6.   

    我也遇到过这样的问题
     你先
     var a,b;//声明;
    再写一个function func(){
       a=new Array(); //声明;

    最后在<body onload="func()">加载这个函数;
    原因:你的a,b在全局变量赋的值还没有加载,这样你查找到的结果是null,你先声明在赋值 将赋值在加载以后,就可以解决了,因为加载的顺序问题;