尝试向函数添加条件,并在执行时收到错误

时间:2017-09-06 22:11:08

标签: javascript arrays discord whitelist

所以,首先,重要的是要注意我正在为我没有设计的东西添加一个功能。我是JavaScript新手,我正在尝试编辑现有的Discord机器人。我发现实现目标的最简单方法是编辑生成随机数的根函数。原始代码的相关片段(取自dice-expression-evaluator模块https://github.com/dbkang/dice-expression-evaluator)如下:

Dice.prototype.roll = function () {
     var rolls = [];
     var sum = 0;
     for (var i = 0; i < this.diceCount; i++) {
          var roll = random.integer(1, this.sideCount) * this.coefficient;
          rolls.push(roll);
          sum += roll;
     }
     return {roll: sum, dice: rolls};
};

这个原始代码工作正常,但不包括我想要的功能(一种简单但冗长的白名单。)在该特定代码块中未定义的4个变量是相当不言自明的。我的代码版本(出于隐私原因略有编辑)如下:

Dice.prototype.roll = function () {
  var rolls = [];
  var sum = 0;
  var range = this.whitelist(); //already tried it with () after whitelist
  console.log(range.join(','));
  for (var i = 0; i < this.diceCount; i++) {
    var roll = random.integer(range[0], range[1]) * this.coefficient; //changed the 2 function arguments, but both are still integers
    rolls.push(roll);
    sum += roll;
  }
  return {roll: sum, dice: rolls};
};

Dice.prototype.whitelist = function () {
  let user0 = "a";
  let user1 = "b";
  let user2 = "c";
  let user3 = "d";

  let user = message.author.id;
  let die = this.sideCount;
  console.log(user);
  console.log(string(die));
  if (user==user0) {
    var min = Math.ceil(0.76 * die);
    var max = die;
  } else if (user==user1) {
    var min = Math.ceil(0.76 * die);
    var max = die;
  } else if (user==user2) {
    var min = 1;
    var max = die;
  } else if (user==user3) {
    var min = 1;
    var max = die;
  } else {
    var min = 1;
    var max = die;
  }
  return [min, max];
};

message.author.id变量可用于启动整个函数链3范围的函数,但在MY版本的代码中,(即使在纠正了一些缺失的分号和类似的微小错误之后)一个骰子表达式在原始代码中功能完全生成“无效骰子表达式”错误。除了在random.integer调用中引入新变量和变量之外,我发现旧版本和新版本的Dice.prototype.roll之间没有功能差异。根据我的理解,我的白名单函数返回一个整数数组,这些整数正以一种完全合理的方式直接注入random.integer函数调用......我非常困惑。

0 个答案:

没有答案