这段代码是由我的在线教师colt (网络开发入门教师)编写的,但是我不明白他为什么写movie.haveWatched,movie.title,movie.rating。我认为应该有movieDb.haveWatched,movieDb.title,movieDb.rating,因为haveWatched,标题,评级都在movieDb里面。
var movieDb = [ { title:"gujja",
rating:5,
haveWatched:true, },
{ title:"la",
rating:5,
haveWatched:false,}];
movieDb.forEach(function(movie){
var result = "you have ";
if (movie.havewatched){
result += "watched ";
}else {
result += "not seen ";
}
result += `${movie.title} -`
result += `${movie.rating}`
console.log(result);
});
发布于 2018-06-13 16:16:37
movieDb是一个对象数组。
在这项职能中:
movieDb.forEach(function(movie){
//code
}movieDb正在被迭代,数组中的每个元素都被执行。
所以movie是一个变量,在forEach函数中。
发布于 2018-06-13 16:14:03
forEach是一个高阶函数。在本例中,movie引用数组的每个元素,每次都是传递给forEach内部的回调函数。
有关此方法的更多信息,请参见:Objects/Array/forEach
事实上,你可以随便给它取名字。这也是有效的代码,但可能没有多大意义:
movieDb.forEach(function(callItAnything){ var result = "you have "; if (callItAnything.havewatched){ result += "watched "; } else { result += "not seen "; } result += `${callItAnything.title} -` result += `${callItAnything.rating}` console.log(result); });
另外,学习正确地缩进代码是非常有用的:)
发布于 2018-06-13 16:17:30
以下是理解代码的要点
movieDb 数组中,其中包含2电影。haveWatched、title和rating属性的对象。forEach 函数迭代数组,并一次将数组中的一个项传递给回调函数。movieDb.forEach在movieDb数组上迭代,并向回调函数提供电影对象。dot operator (.)访问。https://stackoverflow.com/questions/50841774
复制相似问题