有条件的没有给出预期的答案

Conditional not giving expected answer

我正在写一个非常简单的条件语句,它只会给我 "else" 答案。

思路是,如果我的宠物(pets)多于我的朋友(friendsPets),那么我需要将它赋值给一个新的变量(mostPets),看谁的宠物最多。但是,当我记录新变量 (mostPets) 时,它只从条件的 "else" 部分给我答案。新变量应该在控制台中记录 4,但它只记录 0。如果我重新排列条件语句,它确实会给我 4 - 但我知道那是不对的。我知道这是一个相当简单的问题,但我对此很陌生。有什么建议吗?

let pets = 2;
let friendsPets = 0;
pets = 4;

if (pets > friendsPets) {
  let mostPets = pets
} else(friendsPets > pets)
let mostPets = friendsPets
console.log(mostPets);

首先,您需要在执行条件之前声明您的变量 mostPets,否则该变量将无法在该条件之外访问。

另外,你的条件else-if写错了。通过这些更改,它应该像这样正常工作:

let pets = 2;
let friendsPets = 0;
pets = 4;

let mostPets;
if (pets > friendsPets) {
  mostPets = pets
} else if (friendsPets > pets) {
  mostPets = friendsPets
}
// Note in this scenario we are ignoring if the variables are the same value, it would be better to just put 'else' without an extra condition.
console.log(mostPets);

注: 正如@mplungjan 所提到的,要缩短代码,您可以使用以下代码更改逻辑以获得相同的结果:

let mostPets = Math.max(pets, friendsPets);

您错过了一个 if,您需要声明所有变量并且不要多次使用 let。让大括号内只在那个所谓的范围内可见

您在评论中提到您需要使用 ifs,那么如果您要删除第二个条件,则不需要第二个 if:

const pets = 2;
const friendsPets = 0;
let mostPets = pets; // default - could be 0 or nothing (undefined)

if (pets > friendsPets) {
  mostPets = pets;
} else {
  mostPets = friendsPets;
}
console.log(mostPets);

// OR using the ternary operator;

mostPets = pets > friendsPets ? pets : friendsPets;
console.log(mostPets);

这是一个更优雅的版本,因为你是在比较数字

const pets = 2;
const friendsPets = 0;
let mostPets = Math.max(pets,friendsPets)

console.log(mostPets);