Javascript 为什么我的加减法不起作用?
所以我使用readline sync来执行基本计算。乘法和除法都很好,但当我把两个数相加时,它只是将它们串联起来,当我减去时,它返回NaN 知道我做错了什么吗 这是我的密码:Javascript 为什么我的加减法不起作用?,javascript,function,if-statement,readline,Javascript,Function,If Statement,Readline,所以我使用readline sync来执行基本计算。乘法和除法都很好,但当我把两个数相加时,它只是将它们串联起来,当我减去时,它返回NaN 知道我做错了什么吗 这是我的密码: var readlineSync = require("readline-sync"); var enterNum1 = readlineSync.question("Please enter your first number: "); var enterNum2 = readlineSync.question("Pl
var readlineSync = require("readline-sync");
var enterNum1 = readlineSync.question("Please enter your first number: ");
var enterNum2 = readlineSync.question("Please enter your second number: ");
var operations = ["add", "sub", "mul", "div"];
var selectOperation = readlineSync.keyInSelect(operations, "What operation will you like to perform?");
function addNum(num1, num2){
console.log("The result is : " + Number(num1) + Number(num2));
}
function subNum(num1, num2){
console.log("The result is : " + Number(num1) - Number(num2));
}
function mulNum(num1, num2){
console.log( "The result is : " + Number(num1) * Number(num2));
}
function divNum(num1, num2){
console.log("The result is : " + Number(num1) / Number(num2));
}
if(selectOperation === 0){
addNum(enterNum1, enterNum2);
}else if(selectOperation === 1){
subNum(enterNum1, enterNum2)
}else if(selectOperation === 2){
mulNum(enterNum1, enterNum2);
}else {
divNum(enterNum1, enterNum2);
}
把你的操作放在括号里 e、 g 推理 根据运算符优先级,乘法和除法的优先级更高,即先执行乘法和除法。在加法和减法的情况下,优先级是相同的,从左到右操作。因此,首先字符串
”的结果是:“
被添加到Number(num1)
,然后添加到Number(num2)
,这导致串接和减法,它变成试图从字符串中减去一个数字,结果是NaN
作为参考,这是因为运算符的优先顺序。JavaScript解释器尝试连接字符串和第一个数字,而不是将两个数字相加,然后将结果连接到字符串 为了缓解这种情况,您需要指示JavaScript在字符串连接之前执行加法/减法。括号有助于您这样做:
console.log("The result is : " + (Number(num1) + Number(num2)));
console.log("The result is : " + (Number(num1) - Number(num2)));
由于乘法和除法的优先级高于字符串串联,因此没有观察到相同的行为
console.log("The result is : " + (Number(num1) + Number(num2)));
console.log("The result is : " + (Number(num1) - Number(num2)));