JavaScript循环无法识别全局变量

时间:2014-05-25 15:54:47

标签: javascript

我正在关注一本javascript书籍,并试图以自己的方式重新实现这些书籍代码示例。

我一直在" ReferenceError:测试未定义"在Firefox调试器中

这是我的代码:

      <script>

        var test1 = "abcdef";
        var test2 = 123;
        var test3 = true;
        var test4 = {};
        var test5 = [];
        var test6;
        var test7 = { "abcdef": 123 };
        var test8 = ["abcdef", 123];
        function test9() { return "abcdef" };

        for (var i = 0 ; i < 10 ; i++) {

            var probe = test[i];
            alert((typeof probe).toString);

        }

    </script>

3 个答案:

答案 0 :(得分:2)

test[1]test1完全不同。你想要的是

    var test = [];
    test[1] = "abcdef";
    test[2] = 123;
    test[3] = true;
    test[4] = {};
    test[5] = [];
    test[6];
    test[7] = { "abcdef": 123 };
    test[8] = ["abcdef", 123];
    test[9] = function() { return "abcdef" };

    for (var i = 0 ; i < 10 ; i++) {

        var probe = test[i];
        alert(typeof probe);

    }

答案 1 :(得分:1)

当您编写test [i]时,您在i索引处接近了名为&#39; test&#39;的数组,这当然会导致错误,因为测试数组不存在。
为了正确实现您的代码,您可以编写:

var test = [];
test[1] = "abcdef"; 
test[2] = 123;

等等。

这也很好:

var obj ={};
obj.test1 = "abcdef";
obj.test2= 123;

在你的循环中使用:

var probe = obj["test"+i];

(您的循环索引应初始化为1而不是0)

答案 2 :(得分:0)

test没有真正定义。 所以只需将test更改为您已经声明的其他变量名称。

        var test1 = "abcdef";
        var test2 = 123;
        var test3 = true;
        var test4 = {};
        var test5 = [];
        var test7 = { "abcdef": 123 };
        var test8 = ["abcdef", 123];