var movies =
[
{
title: "Shawshank",
rating: 5,
hasWatched: true
},
{
title: "Boardwalk empire",
rating: 5,
hasWatched: true
},
{
title: "bladerunner",
rating: "unkown",
hasWatched: false
},
{
title: "Ratatouille",
rating: 4,
hasWatched: true
}
]
for(var i = 0; i <movies.length; i++)
{
if(movies[i].hasWatched)
{
console.log("You have seen " + movies[i].title + " - " +
movies[i].rating);
}
else (movies[i].hasWatched !== true)
{
console.log("You have not seen " + movies[i].title + " - " +
movies[i].rating);
}
}当我将else-if更改为else时,它将生成以下输出:
为什么在这种情况下,代码似乎会失败呢?
我特别感兴趣的是为什么bladerunner只输出一个。唯一明显的区别是,评级属性是"string“而不是"number”。
最好的
发布于 2017-11-11 20:20:40
else语句不使用条件表达式。else语句后面的表达式无条件地执行。
在本例中:
其他(moviesi.haswatched !== true) {console.log(“您没有看到”+ moviesi.title +“-”+ moviesi.rating);}
else语句将执行表达式(movies[i].haswatched !== true),它没有任何效果。这就像一个声明foo === true;。它被解释,执行,它对程序没有任何影响。
发布的代码相当于我添加的分号,以澄清语句的结尾:
for(var i = 0; i <movies.length; i++)
{
if(movies[i].hasWatched)
{
console.log("You have seen " + movies[i].title + " - " +
movies[i].rating);
}
else (movies[i].hasWatched !== true);
console.log("You have not seen " + movies[i].title + " - " + movies[i].rating);
}也就是说,总是执行最后一个console.log语句。
你可能打算这样写:
if (movies[i].hasWatched) {
// ...
} else {
// ...
}发布于 2017-11-11 20:14:44
您需要一个if来检查另一个条件
} else if (movies[i].haswatched !== true)
// ^^或者省略该条件,因为您已经用一个真正的条件检查了条件,那么您只需要对else部件使用反向条件进行新的检查。
} else {
//...
}
var movies = [{ title: "Shawshank", rating: 5, hasWatched: true }, { title: "Boardwalk empire", rating: 5, hasWatched: true }, { title: "bladerunner", rating: "unkown", hasWatched: false }, { title: "Ratatouille", rating: 4, hasWatched: true }],
i;
for (i = 0; i < movies.length; i++) {
if (movies[i].hasWatched) {
console.log("You have seen " + movies[i].title + " - " + movies[i].rating);
} else {
console.log("You have not seen " + movies[i].title + " - " + movies[i].rating);
}
}
发布于 2017-11-11 20:15:41
for(var i = 0; i <movies.length; i++)
{
if(movies[i].hasWatched)
{
console.log("You have seen " + movies[i].title + " - " + movies[i].rating);
}
else
{
console.log("You have not seen " + movies[i].title + " - " +
movies[i].rating);
}
}只使用其他方法,而不是给出另一个条件。它将解决以下问题:)
https://stackoverflow.com/questions/47242296
复制相似问题