For循环已初始化但未输入

时间:2016-05-03 14:12:41

标签: javascript for-loop initialization

我的for循环正在为某些值而不是为其他值而工作。差异似乎是我初始化的计数器。举个例子,timesTable 12和startFrom 1始终有效。但如果我将startFrom更改为3则不会发生任何事情。

var timesTable = prompt("Enter times table value:", "");
var startFrom = prompt("Enter startfrom value:", "");

manyTimes(timesTable,startFrom);

function manyTimes(baseValue, startValue){
  var loopCounter = startValue;
  for (; loopCounter <= baseValue; loopCounter++)
  {
    result = baseValue * loopCounter;
    document.write(baseValue + " * " + loopCounter + " = " + result + "<br/>");
  }
}

调试器实际上显示了初始化,但document.write从不触发。

Image of debugger in action

任何人都知道这导致了什么?

2 个答案:

答案 0 :(得分:2)

调试器清楚地显示您的边界是字符串,&#34; 3&#34;优于&#34; 12&#34;根据词典顺序,你永远不会满足循环条件。

答案 1 :(得分:2)

您需要在比较和增量之前将String解析为数字

function manyTimes(baseValue, startValue){
  baseValue = parseInt(baseValue,10)
  var loopCounter = parseInt(startValue,10);
  for (; loopCounter <= baseValue; loopCounter++)
  {
    result = baseValue * loopCounter;
    document.write(baseValue + " * " + loopCounter + " = " + result + "<br/>");
  }
}