我将此代码编写为计算器的一部分,用于练习。它主要按预期工作。
但是,添加操作会连接两个数字而不是添加它们。为什么呢?
function calcApp (aNumber, bNumber) {
var a = prompt("Enter A number :");
var b = prompt("Enter B number :");
var mathSign = prompt("Enter Math Sign :");
aNumber = a;
bNumber = b;
if (mathSign == "+") {
alert(a + b);
}
else if (mathSign == "-") {
alert(a - b);
}
else if (mathSign == "*") {
alert(a * b);
}
else if (mathSign == "/") {
alert(a / b);
}
else {
prompt("Enter a valid Math sign!!")
}
}
calcApp();
答案 0 :(得分:4)
prompt
返回一个字符串。在字符串上使用+
运算符时,它们会连接在一起。
您必须获取用户输入的数字值。您可以通过各种不同的方式实现这一目标:
var str = '5.4';
console.log(parseInt(str, 10)); // parse integer from decimal numeric string
console.log(parseFloat(str));
console.log(+str);
console.log(Number(str));
答案 1 :(得分:1)
prompt
将返回一个字符串。您需要将其转换为数字。
您可以使用Number
对象将字符串转换为数字。
如果您使用Number
对象,请检查NaN
(非数字)。例如,Number('55 abc')
会返回NaN
小心使用parseInt
时会删除十进制数字。例如,parseInt('12 .99')返回12
。
以下是使用Number
对象
function calcApp (aNumber, bNumber) {
var a = prompt("Enter A number :");
var b = prompt("Enter B number :");
var mathSign = prompt("Enter Math Sign :");
aNumber = a;
bNumber = b;
//Convert to number
a = Number(a); <----------
b = Number(b); <----------
if (mathSign == "+") {
alert(a + b);
}
else if (mathSign == "-") {
alert(a - b);
}
else if (mathSign == "*") {
alert(a * b);
}
else if (mathSign == "/") {
alert(a / b);
}
else {
prompt("Enter a valid Math sign!!")
}
}
calcApp();