JS 新手,仍在学习,但正在为学校编写一个计算器。我已经完成并解决了所有问题,但有一个小问题我无法查明。任何帮助表示赞赏。一切正常,但“answer”函数被连续调用两次。第一次出现时,一切都正确,但第二次它显示我的一个变量未定义。显然我只需要它第一次就正确显示。我错过了什么?
var number1;
var number2;
var operator;
var total;
var runagain;
function main()
{
inputNumbers();
assignment();
answer();
keepgoing();
}
function inputNumbers()
{
number1 = parseInt(prompt("Enter Your First Number", 0));
while(isNaN(number1))
{
alert("You did not enter a valid number. Please try again.");
number1 = parseInt(prompt("Enter Your First Number", 0));
}
number2 = parseInt(prompt("Enter Your Second Number", 0));
while(isNaN(number2))
{
alert("You did not enter a valid number. Please try again.");
number2 = parseInt(prompt("Enter Your Second Number", 0));
}
}
function assignment()
{
operator = parseInt(prompt("Enter a '1' for addition\n" + "Enter a '2' for subtraction\n" + "Enter a '3' for multiplication\n" + "Enter a '4' for division\n" + "Enter a '5' for modulus/remainder"));
if(operator == 1)
{
add();
operator = " + ";
answer(operator);
}
else if(operator == 2)
{
subtract();
operator = " - ";
answer(operator);
}
else if(operator == 3)
{
multiply();
operator = " * ";
answer(operator);
}
else if(operator == 4)
{
divide();
operator = " / ";
answer(operator);
}
else if(operator == 5)
{
modulus();
operator = " % ";
answer(operator);
}
}
function add()
{
total = number1 + number2;
}
function subtract()
{
total = number1 - number2;
}
function multiply()
{
total = number1 * number2;
}
function divide()
{
total = number1 / number2;
}
function modulus()
{
total = number1 % number2;
}
function answer(operator)
{
alert("Your calculation was: " + number1 + operator + number2 + " = " + total);
}
function keepgoing()
{
runagain = confirm("Would you like to make another calculation?");
if(runagain === true)
{
main();
}
}
最佳答案
您在此函数中调用answer():
function main()
{
inputNumbers();
assignment();
answer(); // <- here
keepgoing();
}
但是您还可以调用 assignment()
,它会返回 answer()
函数:
function assignment()
{
operator = parseInt(prompt("Enter a '1' for addition\n" + "Enter a '2' for subtraction\n" + "Enter a '3' for multiplication\n" + "Enter a '4' for division\n" + "Enter a '5' for modulus/remainder"));
if(operator == 1)
{
add();
operator = " + ";
answer(operator); // <- here, and also in subsequents if/else blocks
}
...
旁注:如果您打算以十进制系统进行解析,则应始终将 parseInt
与添加的 parseInt(x,10)
参数一起使用。
关于javascript - 为什么这个函数会调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536352/