我正在关注一本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>
答案 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];