我知道使用Math.max()的解决方案,但我希望有人可以解释为什么以下不起作用。
array = [4, 5, 1, 3]
for (var i = 0; i < array.length; i++) {
var num = 0;
if (array[i]> num) {
num = array[i];
}
}
以上只是将数组中的最后一个数字设为num
。所以我的猜测是array[i]
并不是在条件中出现的数字(但可能是一个字符串)。请原谅我对JS的不完全理解。非常感谢任何帮助!
答案 0 :(得分:4)
您一直在循环中将num
重置为0
。您需要在外部移动变量声明和赋值:
array = [4, 5, 1, 3]
var num = 0;
for (var i = 0; i < array.length; i++) {
if (array[i]> num) {
num = array[i];
}
}
console.log(num);
答案 1 :(得分:4)
您的问题的真正答案是学习如何调试JavaScript代码。您的Web浏览器内置了一个调试器,可让您逐步执行代码语句,并在每一步中查看所有变量。请试试这个;它会对你有很大的帮助。
只需在第一行代码前添加debugger;
语句,然后打开开发人员工具并重新加载页面。调试器将在该语句上停止,然后使用调试器中的Step In按钮单步执行代码。
为了让您轻松入门,以下是原始代码的副本(带有错误)作为添加了debugger;
语句的代码段:
function test() {
debugger;
array = [4, 5, 1, 3]
for (var i = 0; i < array.length; i++) {
var num = 0;
if (array[i]> num) {
num = array[i];
}
}
}
test();
最好将您正在测试的代码放在函数中,就像我在这里所做的那样。这使您可以在没有标准全局变量和函数的情况下查看局部变量。
打开开发人员工具,然后运行代码段,然后使用上面提到的单步按钮。
每个浏览器都内置了以类似方式工作的开发人员工具。例如,这是guide to the Chrome DevTools。
答案 2 :(得分:1)
只是一些提示:
var array = [4, 5, 1, 3],
i,
max = array[0];
for (i = 1; i < array.length; i++) {
if (max < array[i]) {
max = array[i];
}
}
console.log(max);