
在javascript编程中,遍历数组是常见的操作。然而,一个细微的拼写错误可能导致整个逻辑流程中断,例如在尝试显示一系列交互式问题时,程序却直接跳过了问题显示环节,直接给出了最终结果。这通常是由于在循环条件中错误地引用了数组的长度属性。
考虑以下JavaScript代码片段,它旨在通过prompt函数依次弹出问题并收集用户答案:
var questions = [
{
prompt:"What is the color of banana?\n(a)red\n(b)green\n(c)yellow",
answer:"c"
},
{
prompt:"What is the color of strawberry?\n(a)red\n(b)green\n(c)yellow",
answer:"a"
},
{
prompt:"how many centimeters is equal to One meter?\n(a)1\n(b)10\n(c)100",
answer:"c"
}
];
var score = 0;
// 错误之处在于这里:questions.lengths
for(var i=0; i<questions.lengths; i++){
var input=prompt(questions[i].prompt);
if(input==questions[i].answer){
score++;
alert("Answer Correct!");
}
else{
alert("Answer Wrong!");
}
}
alert("Total correct answer: "+ score );这段代码的预期行为是循环三次,依次弹出香蕉颜色、草莓颜色和米与厘米转换的问题。然而,实际执行时,用户会发现没有任何问题弹出,程序直接显示了“Total correct answer: 0”的提示。
问题的根源在于for循环的条件表达式:i<questions.lengths。在JavaScript中,数组的长度属性是length(小写),而不是lengths。当代码尝试访问questions.lengths时,由于questions对象上不存在名为lengths的属性,因此它会返回undefined。
在JavaScript中,当undefined参与数值比较时(例如i < undefined),undefined会被隐式转换为NaN(Not-a-Number)。任何与NaN的比较操作(除了NaN != NaN)都会返回false。因此,i < NaN始终为false,导致for循环的条件在第一次迭代之前就不满足,循环体内的代码从未被执行。这就是为什么用户没有看到任何问题弹出的原因。
立即学习“Java免费学习笔记(深入)”;
要解决这个问题,只需将循环条件中的questions.lengths修正为正确的questions.length。length属性会返回数组中元素的数量,从而确保循环能够正确地遍历数组中的每一个元素。
var questions = [
{
prompt:"What is the color of banana?\n(a)red\n(b)green\n(c)yellow",
answer:"c"
},
{
prompt:"What is the color of strawberry?\n(a)red\n(b)green\n(c)yellow",
answer:"a"
},
{
prompt:"how many centimeters is equal to One meter?\n(a)1\n(b)10\n(c)100",
answer:"c"
}
];
var score = 0;
// 修正后的代码:questions.length
for(var i=0; i<questions.length; i++){
var input=prompt(questions[i].prompt);
if(input==questions[i].answer){
score++;
alert("Answer Correct!");
}
else{
alert("Answer Wrong!");
}
}
alert("Total correct answer: "+ score );通过这一简单的修正,for循环将能够正确地从i=0开始,一直迭代到i小于questions.length(即数组元素的总数),从而依次弹出所有预设的问题。
一个看似微不足道的拼写错误,如将array.length误写为array.lengths,可能会导致JavaScript代码中的循环完全失效。理解length属性的正确用法以及undefined在条件判断中的行为至关重要。通过细致的编码习惯、利用开发者工具进行调试以及采纳现代的遍历方法,可以有效避免此类常见错误,确保程序的逻辑正确性和稳定性。
以上就是JavaScript数组遍历指南:避免lengths拼写错误的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号