有条件的没有给出预期的答案
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);
我正在写一个非常简单的条件语句,它只会给我 "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);