@fgehte

Область видимости функции, в чем проблема?

Подскажите как решить проблему с передачей аргумента, где моя ошибка и как сделать правильно, возможно здесь какая-то детская ошибка, но я её не вижу?
Суть в следующем, при клики на блок setup, должна сработать функция onNC, в которой функция gRAE выдает случайный элемент массива.
В первом варианте все работает, а во втором выдает ошибку getRandomArrayElement is not a function мне нужно решение с пердачей миссава как во втором варианте, как решить?
var numbers = [3, 5, 6, 7, 1];

var getRandomElement = function (minValue, maxValue) {
  return Math.floor(Math.random() * (maxValue - minValue + 1)) + minValue;
};

var getRandomArrayElement = function (arr) {
  return arr[getRandomElement(0, arr.length - 1)];
};

// 1 Вар
var onNumberClick = function () {
  console.log(getRandomArrayElement(numbers));
}
setup.addEventListener('click', onNumberClick);

// 2 Вар
var onNumberClick = function (number) {
  console.log(getRandomArrayElement(number));
}
setup.addEventListener('click', onNumberClick(numbers));
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 3
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Не вчитывался, но здесь неверно:

setup.addEventListener('click', onNumberClick(numbers));

Нада:
setup.addEventListener('click', function() {
    onNumberClick(numbers);
});
Ответ написан
Комментировать
1) https://developer.mozilla.org/ru/docs/Web/API/Even...
Внимательно почитайте про тип listener и подумайте какой он у вас во втором случае
Я вот тут ошибки не получил https://jsfiddle.net/c6xuy1g5/ но получил вполне ожидаемый из вашего кода результат
Ответ написан
Комментировать
@Sashqa
дока
setup.addEventListener('click', function() {
    onNumberClick(numbers);
});


или

setup.addEventListener('click', () => onNumberClick(numbers));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы