На собеседовании на Front End вакансию задали такой вопрос..?
Значение i после цикла является -1. -1 -1 = -2.
Читайте про области видимости, замыкания.
var i = 10;
var array = [];

while (i--) {
  array.push(function() {
    return i + i;
  });
}

array.forEach(item => console.log(item())); // 10 раз напечатается -2

// после выхода из цикла i = -1; И так как i является "глобальной", то все функции будут "ссылаться" на одно и тоже значение после цикла
// array[function() { return i + i; }, function() { return i + i }, function() { return i + i }, ...]
// ==> array[function() { return -1 + -1 }, function() { return -2 }, ...]
// ==> array[0]() ==> return -2;

// ------------------------------------------------------
// Проблему можно решить так:

var i = 10;
var array = [];

while (i--) {
  array.push((function(i) {
    // Сохранить i в замыкании

    return function() {
    	return i + i;
    }
  })(i));
}

array.forEach(item => console.log(item())); // 18 16 14 12 10 8 6 4 2 0

// ------------------------------------------------------
// Или так

var i = 10;
var array = [];

while (i--) {
	let value = i;

  array.push(function() {
  	return value + value;
  });
}

array.forEach(item => console.log(item())); // 18 16 14 12 10 8 6 4 2 0