Javascript:If语句包含未解析的函数

Javascript:If语句包含未解析的函数,javascript,if-statement,Javascript,If Statement,嗨,我还是javascript新手,我不明白为什么这个if语句不能解析 消息是一个变量字符串,以“!leve alc 35”为例 var leve = parseInt(message.split(' ')[2]); var leves = function() { if (Number(leve) < 50) { [(message.split(' ')[1]).toUpperCase(), round5(parseInt(message.split(' ')[

嗨,我还是javascript新手,我不明白为什么这个if语句不能解析

消息是一个变量字符串,以“!leve alc 35”为例

var leve = parseInt(message.split(' ')[2]);

var leves = function() {
  if (Number(leve) < 50) {
    [(message.split(' ')[1]).toUpperCase(),
      round5(parseInt(message.split(' ')[2]))
    ]; // Getting the lvls in question
    leves = leves.join("");
  } else {
    [(message.split(' ')[1]).toUpperCase(),
      round2(parseInt(message.split(' ')[2]))
    ]; // Getting the lvls in question
    leves = leves.join("");
  }
};
舍入公式

  var round5 = function round5(x) {
    return Math.ceil(x / 5) * 5;
  };
  var round2 = function round2(x) {
    return Math.ceil((x+1) / 2) * 2;
  };

您可以存储拆分后的值,并根据该值返回一个新字符串,其中包含一个四舍五入的值

const
round5=x=>Math.ceil(x/5)*5,
round2=x=>Math.ceil((x+1)/2)*2,
leves=消息=>{
var[,string,value]=message.split(“”);
值=+值<50?第五轮(+值):第二轮(+值);
返回[string.toUpperCase(),value].join(“”);
};
控制台日志(leves(“!leve alc 35”);

控制台日志(leves(“!leve alc 54”)我认为您的函数应该是这样的。假定“message”为全局变量

var leves = function() {
  if (Number(leve) < 50) {
    return [(message.split(' ')[1]).toUpperCase(),
      round5(parseInt(message.split(' ')[2]))
    ].join("");// Getting the lvls in question
    //leves = leves.join("");
  } else {
    return [(message.split(' ')[1]).toUpperCase(),
      round2(parseInt(message.split(' ')[2]))
    ].join(""); // Getting the lvls in question
    //leves = leves.join("");
  }
};
var leves=function(){
如果(数量(级别)<50){
返回[(message.split(“”)[1]).toUpperCase(),
round5(parseInt(message.split(“”)[2]))
].join(“”;//获取有问题的LVL
//leves=leves.join(“”);
}否则{
返回[(message.split(“”)[1]).toUpperCase(),
round2(parseInt(message.split(“”)[2]))
].join(“”;//获取有问题的LVL
//leves=leves.join(“”);
}
};

我相信你想写的是

var leve = parseInt(message.split(' ')[2]);

if (Number(leve) < 50) {
    var leves = [
        (message.split(' ')[1]).toUpperCase(),
        round5(parseInt(message.split(' ')[2]))
    ]; // Getting the lvls in question
    leves = leves.join("");
} else {
    var leves = [
        (message.split(' ')[1]).toUpperCase(),
        round2(parseInt(message.split(' ')[2]))
    ]; // Getting the lvls in question
    leves = leves.join("");
}
但这仍然有很多重复。我建议你写信

var parts = message.split(' ');
var leve = parseInt(parts[2], 10);

leve = (leve < 50) ? round5(leve) : round2(leve);
var leves = parts[1].toUpperCase() + leve;
var parts=message.split(“”);
var-leve=parseInt(第[2]部分,第10节);
级别=(级别<50)?第五轮(水平):第二轮(水平);
var leves=parts[1].toUpperCase()+leve;

您所说的“无法解决”是什么意思?您的文档中没有任何返回语句function@CodeManiac这有关系吗?无论如何都不会调用该函数。
leves
引用绑定到外部作用域中的函数的变量,然后尝试将
leves
重新分配给调用本身的
join
的结果,这没有任何意义。您如何处理这些数组文本?@Bergi无需删除括号,是的,你是对的,逗号将充当定界数组element@Bergi它正在工作,我找不到任何问题。查看此fiddler链接哦,你是对的,我被
消息周围不必要的括号完全弄糊涂了。split(“”)[1]
感谢你花时间处理我的混乱,此代码适用于第5轮函数,但由于某些原因,50以上的值无法正确返回,因为“!leve alc 54”我希望使用ALC56,但我看到了ALC542。它似乎在初始值的末尾加了一个2?这是一个问题,通过传递一个字符串和一个后续的加法。啊,我看到了,这个值需要+来表示它是一个数字,对吗?感谢您的帮助,现在这一切都很顺利:)
var leve = parseInt(message.split(' ')[2]);

var leves = (Number(leve) < 50)
  ? [
        (message.split(' ')[1]).toUpperCase(),
        round5(parseInt(message.split(' ')[2]))
    ]
  : [
        (message.split(' ')[1]).toUpperCase(),
        round2(parseInt(message.split(' ')[2]))
    ];
leves = leves.join("");
var parts = message.split(' ');
var leve = parseInt(parts[2], 10);

leve = (leve < 50) ? round5(leve) : round2(leve);
var leves = parts[1].toUpperCase() + leve;