簡體   English   中英

Javascript減法返回NaN

[英]Javascript subtraction returns NaN

我的代碼出了什么問題? 除減法之外的所有東西都有效。 它只返回NaN。 我是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;

}

您需要將操作分組在括號中,例如alert("Answer: " + (x - y)); (和其他人一樣)。 否則JavaScript首先運行"Answer: " + x ,從而產生一個字符串。

另外,總是為parseInt指定基數(你想要10): parseInt(input, 10) ,否則一些引擎會與八進制數混淆。

你的麻煩在這里:

alert("Answer: " + x - y);

由於運算符的關聯如何工作,它就好像你寫了這樣:

alert(("Answer: " + x) - y);

你需要像這樣寫:

alert("Answer: " + (x - y));

這里的片段:

 // 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)。 如果你把x + y放在那里而不是z,你也會從添加中得到意想不到的結果。

發生的事情是運營商優先權。 乘法和除法的優先級高於加法,因此它們首先完成 - 在隱式轉換為字符串以進行連接之前。

使用減法,“+”和“ - ”在優先級上相等,因此按從左到右的順序完成。 因此concat發生在數學之前,這使得你試圖從字符串中減去y(這不起作用,因此...... NaN)。

另外,它只是將兩個數字連接到字符串上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM