Одно и тоже значение Math.random в переменной

82
16 февраля 2022, 07:20

Всем привет. Начал изучать JavaScript и столкнулся с ошибкой в книге. Вообщем создаю два массива:

var mass = ["I", "We",];
var mass2 = ["love", "hate", "not", "return"];

Далее пишу рандом для них:

var math = mass[Math.floor(Math.random() * 2)];
var math2 = mass2[Math.floor(Math.random() * 4)];

НО! если писать рандом в переменной, то как я понял, он один раз считает и записывает это число как значение переменной. Далее складываю все:

var result = math + " " + math2;

Ии при каждом вводе result мне выдает одно и то же выражение вместо рандомных. Но если в консоли каждый раз вводить так:

mass[Math.floor(Math.random() * mass.length)] + mass2[Math.floor(Math.random() * mass2.length)];

То все прекрасно работает. Задавал вопрос на другом форуме и у человека код работает.Но у меня почему то нет. Подскажите как это сделать, чтобы работало через переменную.

Answer 1

Чтобы добиться похожей структуры, Можно сделать это через функиции.

var math = () => mass[Math.floor(Math.random() * 2)];
var math2 = () => mass2[Math.floor(Math.random() * 4)];
var result = math() + " " + math2();
Answer 2

Разовью мысль @ВиталийДячук и доведу ее до абсурдности.

Так делать не стоит, это из раздела "вредные советы".

var mass = ["I", "We", ]; 
var mass2 = ["love", "hate", "not", "return"]; 
 
Object.defineProperty(window, 'math', { 
  get: () => 
    mass[Math.floor(Math.random() * 2)] 
}); 
Object.defineProperty(window, 'math2', { 
  get: () => 
    mass2[Math.floor(Math.random() * 4)] 
}); 
 
 
var result = math + " " + math2; 
console.log(result); 
result = math + " " + math2; 
console.log(result); 
result = math + " " + math2; 
console.log(result);

READ ALSO
Как можно задать имя html файлу при сохранении в pdf через браузер?

Как можно задать имя html файлу при сохранении в pdf через браузер?

Есть форма с инпутом содержащим ФИОМожно ли сделать так, чтобы при сохранении файла как pdf в браузере- имя файла было Фамилия

104
Ошибка при чтении XML файла

Ошибка при чтении XML файла

Здравствуйте хочу вывести в консоль атрибут из xml файла

76
C#. Объясните смысл преобразования данных [дубликат]

C#. Объясните смысл преобразования данных [дубликат]

Объясните пожалуйста как работает ключевое checked в данном примере, в 1-ом просто выйдет 0 в консоли из-за переполнения, во втором же программа...

84
Как добавить значок сортировки на заголовок ListView используя MVVM

Как добавить значок сортировки на заголовок ListView используя MVVM

Примеров сортировки по столбцам ListView с отображением треугольника в какую сторону идёт сортировка, я нашёл достаточноНо они все подразумевают...

118