Я создаю массив, и хочу уменьшать все его элементы на один с каждым вызовом функции myReduceByOne(), помогите разобраться почему не работает через замыкание ?
var numb = [88,88,88,88,88];
function createReduce() {
var arrBefore = numb;
var reduceByOne = function() {
return arrBefore.map(function(item,i,arr) {
return item-1;
});
}
return reduceByOne;
}
var myReduceByOne = createReduce();
console.log(myReduceByOne());
console.log(myReduceByOne());
console.log(myReduceByOne());
в коде по аналогии с которым вы пытаетесь сделать counter++
означает, что исходный counter
который находится в лексической области видимости замыкающей функции увеличивается на 1. В том коде который у вас в вопросе ничего подобного нет. Для того, что бы это работало, вам надо изменять arrBefore
. То есть сначала присваивать, а потом возвращать:
var numb = [88,88,88,88,88];
function createReduce() {
var arrBefore = numb;
var reduceByOne = function() {
arrBefore = arrBefore.map(function(item,i,arr) {
return item-1;
});
return arrBefore;
}
return reduceByOne;
}
var myReduceByOne = createReduce();
console.log(myReduceByOne());
console.log(myReduceByOne());
console.log(myReduceByOne());
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Привет!У меня есть сайт на ворд пресс который я поставил на опен сервер, но я ввожу изменения в файлик Css а OpenServer меня игнорирует
На сайте установлена PayPal кнопка мгновенного платежа "Купить сейчас"Оплата реализована через php-скрипт IPN, в результате работы которого в случае...