如果在 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 = 5
和 num2 = 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
两者之间存在一些差异,但在这个阶段,您不必担心
我有一个超级简单的 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 = 5
和 num2 = 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
两者之间存在一些差异,但在这个阶段,您不必担心