如果在 jscript 中,我该如何修复我的 else?它不工作

How do i fix my else if in jscript? It's not working

我有一个超级简单的 jscript 程序(在 html 文件中)。 if 和 else 有效,但 else if 永远无效...

var num1 = prompt("Enter first number");
var num2 = prompt("Enter second number");
function result(){
if(num1 == 10 || num2 == 10){
    alert("one of entered numbers is 10, great!")
    return true
}else if((num1+num2) == 10){
    alert("The sum of 2 numbers is 10, great!")
    return true
}else{
    alert("None of numbers, or the sum is 10")
    return false
}
}
alert("Result is: ", result())

因此,如果其中一个数字是 10,它首先显示 if,但如果它是 5 和 5,或 6 和 4 - 它总是显示其他,我不明白为什么 else if 总是被忽略... 我如何提醒结果 (true/false)?它总是说“结果是:”

我认为您的提示正在将输入保存为字符串,在这里我将它们转换为整数并且它似乎可以工作。 https://jsfiddle.net/fk0tr196/

var num1 = prompt("Enter first number");
var num2 = prompt("Enter second number");
num1 = parseInt(num1,10);
num2 = parseInt(num2,10);
function result(){
if(num1 == 10 || num2 == 10){
    alert("one of entered numbers is 10, great!")
    console.log(num1);
    return true
}else if((num1+num2)== 10){
        console.log(num1);
    alert("The sum of 2 numbers is 10, great!")
    return true
}else{
    alert("None of numbers, or the sum is 10")
    return false
    console.log(num1);
}
}
alert("Result is: ", result())

看看类型强制,严格相等和prompt函数是js。 The prompt function 收到两个可选参数和 returns 一个 string (我没有)。

当你的结果函数被调用时,比方说,num1 = 5num2 = 5,你实际上有:

num1 = "5"
num2 = "5"

看出区别了吗?如果您不相信我,只需 console.log(typeof num1) 或 num2 并自己检查一下!

现在,当您使用双重等于时,您允许类型强制尝试相等,或者换句话说,您接受 5 equals "5"。这有时很有用,但通常您会希望避免使用它并使用 ===,它仅在 VALUE 和 TYPE 相同时计算 true

综上所述,

5 == "5" // true
5 === "5" // false

因此,当您的其中一个值是“10”时,if 语句是 true 并且有效。任何其他情况都属于 else,因为当您 + 两个字符串时,您实际上是在连接它们。 实际上,在两个提示中输入 5 将导致 else if 语句中的 "55",从而导致 false.

有一些方法可以将字符串转换为数字: 1- Number(variable) 2- parseInt(variable) 3- +variable

两者之间存在一些差异,但在这个阶段,您不必担心