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