Javascript减法返回NaN
我的代码有什么问题??除了减法,其他的都能用。它只是返回南。我是javascript新手,所以我的代码可能写得不好Javascript减法返回NaN,javascript,nan,subtraction,Javascript,Nan,Subtraction,我的代码有什么问题??除了减法,其他的都能用。它只是返回南。我是javascript新手,所以我的代码可能写得不好 // Variables var count = prompt("Choose an arithmetic method: \n1. Addition \n2. Subtraktion\n3. Multiplikation\n4. Division"); var x = parseInt(prompt("Enter your first number", "0")); va
// Variables
var count = prompt("Choose an arithmetic method: \n1. Addition \n2. Subtraktion\n3. Multiplikation\n4. Division");
var x = parseInt(prompt("Enter your first number", "0"));
var y = parseInt(prompt("Enter your second number", "0"));
var z = +x + +y;
// Switch function with 4 cases
switch(count) {
case '1':
alert("Answer: " + z);
break;
case '2':
alert("Answer: " + x - y);
break;
case '3':
alert("Answer: " + x * y);
break;
case '4':
alert("Answer: " + x / y);
break;
}您需要将操作分组到括号中,例如
警报(“回答:”+(x-y))代码>(其他代码相同)。否则JavaScript将首先运行“Answer:+x
,生成一个字符串
另外,请始终为parseInt指定基数(您需要10):parseInt(输入,10)
,否则某些引擎会与八进制数混淆。您的问题在于:
alert("Answer: " + x - y);
由于操作员协会的工作方式,它的工作原理就像您编写了以下内容:
alert(("Answer: " + x) - y);
你需要这样写:
alert("Answer: " + (x - y));
此处的代码片段:
//变量
var count=prompt(“选择一种算术方法:\n1.加法\n2.子排序\n3.乘法\n4.除法”);
var x=parseInt(提示(“输入您的第一个数字”,“0”));
var y=parseInt(提示(“输入第二个数字”,“0”));
var z=+x++y;
//开关功能有4种情况
开关(计数){
案例“1”:
警惕(“回答:+z”);
打破
案例“2”:
警告(“回答:”+(x-y));
打破
案例“3”:
警报(“回答:+x*y);
打破
案例“4”:
警报(“回答:+x/y);
打破
}
用括号括起减法:(x-y)。如果你把x+y放在那里而不是z,你也会从加法中得到意想不到的结果
发生的是运算符优先级。乘法和除法的优先级高于加法,所以在隐式转换为字符串以进行串联之前,必须先完成乘法和除法
使用减法时,“+”和“-”的优先级相等,因此按从左到右的顺序完成。所以concat发生在数学运算之前,这使得您试图从字符串中减去y(这不起作用,所以…NaN)
通过加法,它只需将两个数字连接到字符串上。这是什么:var z=+x++y代码>?@JordanHendrix这是一元加号。它将字符串转换为数字<代码>+“10”==10
(尽管由于parseInt
s,这里不需要它)@blex由于某种原因,parseInt不起作用,所以我不得不添加变量z=+x++y;谢谢大家!