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

问题描述 投票:0回答:2

我写了一个非常简单的条件,只给了我“别的”答案。

我的想法是,如果我有更多的宠物(宠物)而不是我的朋友(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);
javascript conditional
2个回答
1
投票

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

另外,你的条件是否 - 如果写得不正确。通过这些更改,它应该像这样正常工作:

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);

1
投票

你错过了一个if,你需要申报所有的vars而不是多次使用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);
© www.soinside.com 2019 - 2024. All rights reserved.