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

标签 javascript if-statement

您好,我还是 javascript 的新手,我不明白为什么这个 if 语句无法解析

message是一个可变字符串,以"!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("");
  }
};

我希望此代码能够确定 String(message) 末尾的值是否大于 49 (50+),如果是,则使用第 2 轮公式而不是第 5 轮公式。我知道它的 if 语句有问题,因为每一行都单独运行良好并返回我的预期值。我将我的 if 语句与 W3School 上的语句进行了比较,我认为我没有遗漏任何内容。我将 if 语句放在一个函数中,这阻止了我在加载脚本时收到的初始错误,但我现在想知道这是否是问题所在?

编辑

返回函数(这是一个不和谐的机器人):

case 'leve':
    bot.sendMessage({
      to: channelID,
    message: leves 
    });
    break;

舍入公式

  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 = message => {
        var [, string, value] = message.split(' ');
        value = +value < 50 ? round5(+value) : round2(+value);
        return [string.toUpperCase(), value].join("");
    };

console.log(leves('!leve alc 35'));
console.log(leves('!leve alc 54'));

关于Javascript:如果语句包含未解析的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135799/

相关文章:

javascript - 如何访问异步等待返回对象中的属性

c# - 在 WebBrowser 中调用一个脚本,并等待它完成运行(同步)

c - 如果用户未在 C 中插入默认变量,则分配一个默认变量

javascript - findDOMNode 已弃用

javascript - 如何在 AMP html 网站中获取 Medium 博客文章?

javascript - 带有可选小数点的十进制数的正则表达式

java - 在调试和运行期间由于某种原因跳过内部 if 语句

java - 创建行程成本计算器

python - 如何编写用于打印的内联 if 语句?

java - 在 Java 中将数组中特定点周围的值相加