Для контекста, я смотрю на пакет npm unique-random
. Это всего восемь строк кода, так что, в полном комплекте:Объясните это утверждение `return`?
'use strict';
module.exports = function (min, max) {
var prev;
return function rand() {
var num = Math.floor(Math.random() * (max - min + 1) + min);
return prev = num === prev && min !== max ? rand() : num;
};
};
Я понимаю, большинство того, что происходит, я просто не совсем уверен, что делает окончательное возвращение заявление.
Может ли кто-нибудь объяснить это как можно яснее (я действительно новичок в JavaScript и кодировании вообще).
Возможно, это может быть общий вопрос о том, что происходит в операциях return
, которые также выглядят как присвоений? Правильно?
Итак, есть условный оператор. И это говорит, что то, что слева от ?
, верно, то что слева от :
, иначе что находится справа от :
. Итак, если num === prev
и min !== max
, назначьте rand()
prev
, иначе назначьте num
на prev
?
Это правильно?
Это создает случайное число, но проверяет, является ли это случайное число, такое же, как в последний раз был сгенерирован случайным числом. Если это фактически то же число, что и в последний раз, он снова вызывает 'rand()', иначе он возвращает 'num'. – h2ooooooo
Вы правы, плюс то, что @ h2ooooooo^сказал. – BenG
Может ли кто-нибудь описать, как должно работать условие 'prev = num === num'? Я не вижу, как он может оценивать что-либо еще, чем 'true' – Aaron