Javascript 结果总是不是一个数字
我对下面的代码有问题。当我给代码提供合适的整数和字符串值时,结果总是不是数字。我尝试将整数乘以*1,还尝试将整数var解析为int,但没有任何效果Javascript 结果总是不是一个数字,javascript,node.js,parseint,Javascript,Node.js,Parseint,我对下面的代码有问题。当我给代码提供合适的整数和字符串值时,结果总是不是数字。我尝试将整数乘以*1,还尝试将整数var解析为int,但没有任何效果 module.exports = async function CalculateUV(context, req) { context.log('JavaScript HTTP trigger function processed a request.'); const stringA = (req.query.string
module.exports = async function CalculateUV(context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
const stringA = (req.query.stringA || (req.body && req.body.stringA));
const stringB = (req.query.stringB || (req.body && req.body.stringB));
const stringC = (req.query.stringC || (req.body && req.body.stringC));
var integerA = (req.query.integerA || (req.body && req.body.integerA));
var integerB = (req.query.integerB || (req.body && req.body.integerB));
var integerC = (req.query.integerC || (req.body && req.body.integerC));
var integerD = (req.query.integerD || (req.body && req.body.integerD));
var result;
if (stringA == 'hello' && stringB == 'world') {
switch (stringC) {
case 'one':
result = 0;
break;
case 'two':
result = (integerA + integerB) * (+integerD / 100);
break;
case 'three':
result = (integerA + integerB) * (intergerD / 100);
break;
case 'four':
result = (integerC) * (integerD / 100);
break;
default:
result = 0;
}
}
else {
result = 'Error';
}
context.res = {
// status: 200, /* Defaults to 200 */
body: 'The result value is:' + result
};
}
这样做:
结果=(+integerA++integerB)*(integerD/100);
中断
或者
结果=
在加法过程中使用数字字符串时需要小心。Req.query是一个字符串,即使您在查询中输入了一个数值。
这可能就是为什么你会得到一个NaN,因为你把一个字符串和一个数字相乘
其他运算符(*,/,-)不执行此操作。因此无需为他们执行此操作。req.query.x始终是一个字符串(因为它是从url导出的)。您需要将其解析为Int:
函数计算器(req){
常量stringA=(req.query.stringA | |(req.body&&req.body.stringA));
常量stringB=(req.query.stringB | |(req.body&&req.body.stringB));
常量stringC=(req.query.stringC | |(req.body&&req.body.stringC));
var integerA=(parseInt(req.query.integerA,10)| |(req.body&&req.body.integerA));
var integerB=(parseInt(req.query.integerB,10)| |(req.body&&req.body.integerB));
var integerC=(parseInt(req.query.integerC,10)| |(req.body&&req.body.integerC));
var integerD=(parseInt(req.query.integerD,10)| |(req.body&&req.body.integerD));
var结果;
if(stringA=='hello'&&stringB=='world'){
开关(stringC){
案例一:
结果=0;
打破
案例二:
结果=(整数+整数b)*(+integerD/100);
打破
案例三:
结果=(整数+整数b)*(整数/100);
打破
案例四:
结果=(整数)*(整数/100);
打破
违约:
结果=0;
}
}否则{
结果='错误';
}
常数res={
body:'结果值为:'+result
};
控制台日志(res);
}
常数要求={
查询:{
斯特林加:“你好”,
stringB:‘世界’,
stringC:'三',
整数:“1”,
整数B:'2',
整数'3',
整数:“4”,
},
正文:{
斯特林加:“四”,
stringB:'五',
stringC:'六',
积分:5,
整数b:6,
整数c:7,
整数:8,
},
}
计算单位价值(req)代码>
用波纹管更换上述管路
var integerA = parseInt(req.query.integerA || (req.body && req.body.integerA));
var integerB = parseInt(req.query.integerB || (req.body && req.body.integerB));
var integerC = parseInt(req.query.integerC || (req.body && req.body.integerC));
var integerD = parseInt(req.query.integerD || (req.body && req.body.integerD));
result = (integerA + integerB) * (integerD / 100);
同样,在整数之前移除+,如下面的波纹管
var integerA = parseInt(req.query.integerA || (req.body && req.body.integerA));
var integerB = parseInt(req.query.integerB || (req.body && req.body.integerB));
var integerC = parseInt(req.query.integerC || (req.body && req.body.integerC));
var integerD = parseInt(req.query.integerD || (req.body && req.body.integerD));
result = (integerA + integerB) * (integerD / 100);
它现在应该可以工作了请分享stringA
,stringB
,stringC
和integerA
,integerB
,integerC
,integerD
-console.log将是获取这些值的最佳方法。这些值其实并不重要,它们只是自然正数和短字符串。例如:IntegerA=100 IntegerB=1000 IntegerC=50 IntegerD=40 StringA=hello StringB=world StringC=one、two、three或fourrequest。查询值始终为stirng。您需要像这样使用它:parseInt(req.query.integerA)
etcAlready尝试了parseInt,它不工作。您在哪里尝试过它?