Что-то не определено, и я не могу понять, почему - PullRequest
0 голосов
/ 03 ноября 2018

Я работаю над проектом, который объединяет в себе несколько разных видов моей любви. D & D, электронные таблицы (Google) и код.

У меня есть пользовательская функция, над которой я работаю, которая должна автоматически искать эту таблицу:

+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|   d100   |                                                                               Result                                                                               |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 01 - 60  | The item communicates by transmitting emotion to the creating carrying or wielding it.                                                                             |
| 61 - 90  | The item can speak, read, and understand one or more Languages.                                                                                                    |
| 91 - 100 | The item can speak, read, and understand one or more Languages. In addition, the item can communicate telepathically with any character that carries or wields it. |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Вот сценарий, который у меня есть:

function communication(max){
  for (var roll = Math.floor(Math.random() * Math.floor(max) + 1); 60 > roll; )
  return "The item communicates by transmitting emotion to the creating carrying or wielding it.";
  for (; 90 > max; )
    return "The item can speak, read, and understand one or more Languages.";
  for (; 100 > max; )
    return "The item can speak, read, and understand one or more Languages. In addition, the item can communicate telepathically with any character that carries or wields it.";
  if (typeof something === "undefined") {
    Logger.log("something is undefined");
    Logger.log(roll)
  }
}

Это работает, в основном. Однако иногда он выдает неопределенную ошибку, и я не могу понять, почему.

[18-11-02 21: 12: 50: 909 GMT] что-то не определено
[18-11-02 21: 12: 50: 910 GMT] 93,0
[18-11-02 21: 12: 50: 910 GMT] undefined

Я знаю, что последнее неопределенное связано с тем, что я не возвращаю переменную roll, но проблема возникает даже с возвращенным значением. 93 меньше 100, больше 91 и поэтому должно возвращаться:

Предмет может говорить, читать и понимать на одном или нескольких языках. В Кроме того, предмет может телепатически общаться с любым персонажем несущий или владеющий им.

Кто-нибудь может пролить свет на это?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Итак, я был глупым и плохо использовал заявления.

Это достигает того, к чему я стремлюсь:

function communication(max) {
  var roll = Math.floor(Math.random() * Math.floor(max) + 1);
  if (60 > roll)
    return "The item communicates by transmitting emotion to the creating carrying or wielding it.";
  return 90 > roll
    ? "The item can speak, read, and understand one or more Languages."
    : 100 > roll
      ? "The item can speak, read, and understand one or more Languages. In addition, the item can communicate telepathically with any character that carries or wields it."
      : void 0;
}
0 голосов
/ 03 ноября 2018

Я бы предложил полностью переписать этот код. Вам нужно прекратить использовать операторы for вместо if.

function c(max) {
 var roll = Math.floor(Math.random() * Math.floor(max) + 1)
 if (roll <= 60)
    return "The item communicates by transmitting emotion to the creating carrying or wielding it.";
 else if (roll <= 90)
    return "The item can speak, read, and understand one or more Languages.";
 else if (roll <= 100)
    return "The item can speak, read, and understand one or more Languages. In addition, the item can communicate telepathically with any character that carries or wields it.";
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...