【发布时间】:2017-10-13 04:41:09
【问题描述】:
我一直在读一本面向初学者的书,《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。
我将循环条件更改为“i movie.showtimes.length;”但它仍然只运行一次并且只显示下午 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 上显示项目,不是吗?
它不应该运行两次吗?
【问题讨论】:
-
想想
return做了什么你就会明白 -
@SamiKuhmonen 哦
标签: javascript arrays loops for-loop