gpt4 book ai didi

javascript - JS 否则/否则如果

转载 作者:行者123 更新时间:2023-11-30 09:29:27 24 4
gpt4 key购买 nike

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 时,它​​会产生以下输出:

  • 你看过肖申克 - 5
  • 你没看过肖申克 - 5
  • 您已经看过 Boardwalk 帝国 - 5
  • 你还没有见过 Boardwalk empire - 5
  • 你没看过银翼 killer - 未知
  • 你看过料理鼠王 - 4
  • 你没看过料理鼠王 - 4

为什么代码在这种情况下似乎失败了?

我对《银翼 killer 》为什么只输出一个特别感兴趣。唯一明显的区别是评级属性是“字符串”而不是“数字”。

最好的

最佳答案

else 语句不使用条件表达式。else 语句后的表达式无条件执行。

在这个例子中:

else (movies[i].haswatched !== true)
{
console.log("You have not seen " + movies[i].title + " - " +
movies[i].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 {
// ...
}

关于javascript - JS 否则/否则如果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47242296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com