Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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 为什么我的加减法不起作用?_Javascript_Function_If Statement_Readline - Fatal编程技术网

Javascript 为什么我的加减法不起作用?

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

所以我使用readline sync来执行基本计算。乘法和除法都很好,但当我把两个数相加时,它只是将它们串联起来,当我减去时,它返回NaN

知道我做错了什么吗

这是我的密码:

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)));