为什么FOR循环只迭代一次?

时间:2017-05-14 08:18:53

标签: javascript arrays loops for-loop

我一直在为初学者读书," First-Head HTML5 Programming"并且有这段代码:

var movie2 = {
    title: "Forbidden Planet",
    genre: "Classic Sci-fi",
    rating: 5,
    showtimes: ["5:00pm", "9:00pm"]
  };

  function getTimeFromString(timeString) {
    var theTime = new Date();
    var time = timeString.match(/(\d+)(?::(\d\d))?\s*(p?)/);
    theTime.setHours( parseInt(time[1]) + (time[3] ? 12 : 0) );
    theTime.setMinutes( parseInt(time[2]) || 0 );
    return theTime.getTime();
  }


  function getNextShowing(movie) {
    var now = new Date().getTime();

    for (var i = 0; i < movie.showtimes.length; i++) {
      var showtime = getTimeFromString(movie.showtimes[i]);
      if ((showtime - now) > 0) {
        return "Next showing of" + movie.title + " is " + movie.showtimes[i];
      }
    }
   return null;
  }

目前,如果我致电getNextShowing(movie2),它将返回下一次显示的时间是下午5:00。  我将循环条件更改为&#34; i &lt; = movie.showtimes.length;&#34;但它仍然只运行一次,只显示下午5:00。  即使我重写了这个函数,循环也只迭代一次:

function getNextShowing(movie) {
    var now = new Date().getTime();

    for (var i = 0; i <= movie.showtimes.length; i++) {
      var showtime = getTimeFromString(movie.showtimes[i]);
      return "Next showing of" + movie.title + " is " + movie.showtimes[i];
    }
   return null;
  }

我在这里没有得到什么? 在第一次迭代i = 0时,循环运行并在索引0处显示showtimes项。之后它的i = 1并且它应该在索引1上显示项目,不是吗?

不应该跑两次吗?

2 个答案:

答案 0 :(得分:2)

您必须知道return关键字的详细信息。

您可以查看this link了解更多详情。谢谢。

答案 1 :(得分:1)

如果像我这样的任何可怜的白痴患有这个&#34;问题&#34; - 它全部是因为return结束了函数执行。 Jeeze ..