Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript减法返回NaN_Javascript_Nan_Subtraction - Fatal编程技术网

Javascript减法返回NaN

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

我的代码有什么问题??除了减法,其他的都能用。它只是返回南。我是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"));
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;谢谢大家!