JavaScript循环无法识别全局变量

JavaScript循环无法识别全局变量,javascript,Javascript,我正在阅读一本javascript书籍,并试图以自己的方式重新实现这些书籍的代码示例 我在Firefox调试器中不断得到“ReferenceError:test未定义” 这是我的代码: <script> var test1 = "abcdef"; var test2 = 123; var test3 = true; var test4 = {}; var test5 = [];

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

我在Firefox调试器中不断得到“ReferenceError:test未定义”

这是我的代码:

      <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>

var test1=“abcdef”;
var-test2=123;
var test3=真;
var test4={};
var test5=[];
var测试6;
var test7={“abcdef”:123};
var test8=[“abcdef”,123];
函数test9(){返回“abcdef”};
对于(变量i=0;i<10;i++){
var探头=试验[i];
警报((探头类型).toString);
}

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);

    }
var测试=[];
测试[1]=“abcdef”;
试验[2]=123;
测试[3]=正确;
测试[4]={};
测试[5]=[];
试验[6];
测试[7]={“abcdef”:123};
测试[8]=“abcdef”,123];
test[9]=function(){return“abcdef”};
对于(变量i=0;i<10;i++){
var探头=试验[i];
警报(探头类型);
}

测试
没有真正定义。 因此,只需将
test
更改为您已经声明的其他变量名

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

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

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

这也很好:

var obj ={};
obj.test1 = "abcdef";
obj.test2= 123;
在循环中使用:

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

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

test
未定义。没有一个变量具有该名称。。。。而
.toString
是一个属性。您可能希望将其作为函数调用(或完全忽略)。
typeof
返回一个字符串,为什么再次将其转换为字符串?同意,这可能是OP想要的。谢谢你们,这正是我需要的。