let arr = [1, 2, 3, 4, 5, 6]
arr.filter(function() {
return function(x) {
return x == 3
}
})
Почему вывод целый массив? Если убрать одну функцию , то все ок. Вопрос касательно замыканий.Вложенная функция имеет доступ ко всему,что выше
Никаких замыканий здесь нет. Для каждого элемента массива Вы возвращаете из обработчика, поданного в filter
, анонимную функцию function(x) { ... }
, не вызывая ее. (Ее вообще никто не вызывает.) Булевское значение, соответствующее ссылке на функцию, - true
.
let arr = [1, 2, 3, 4, 5, 6]
console.log(arr.filter(function(x) {
return x == 3
}));
console.log(arr.filter((x) => x == 3));
Всё очень просто. Фильтрующая функция должна возвращать true или false для каждого элемента массива. Те элементы, для которых вернётся true, будут добавлены в результирующий массив, остальные будут отброшены. А что возвращает ваша фильтрующая функция? Она возвращает анонимную функцию! Не true, не false, функцию! При приведении типа функция выглядит скорее как true, чем false (console.log(Boolean(function() {}));
). И значит все элементы исходного массива добавятся в результат фильтрации.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Решил впервые поработать удаленно дома над своим проектом на nodejs, в котором установлены некоторые модули
Есть типичная форма отправки сообщения, которая отправляет данные на php страницу c помощью ajax с которой идет перенаправление обратно, и при...
на днях смотрел как создать игру на джаваскрипт так скажем практиковался и тут проблема нужно создать анимацию что бы картинка менялась...