Почему у меня возникает ошибка при создании простого цикла из 100 итераций?

'use strict';
try {
	var str = 'e';
	for (var i = 0; i < 100; i++) {
		str += str;
	}
	console.log('попытка');
} catch(e) {
	console.log('ошибка');
}
// Оставшаяся синхронно выполняемая часть кода.
console.log('остаток');

'use strict';
try {
	var str = 'e';
	for (var i = 0; i < 10; i++) {
		str += str;
	}
	console.log('попытка');
} catch(e) {
	console.log('ошибка');
}
// Оставшаяся синхронно выполняемая часть кода.
console.log('остаток');


Ответы (1 шт):

Автор решения: Igor

Потому что Вы пытаетесь создать строку длиной два в сотой степени букв 'e'.

Это примерно 10 в тридцатой степени символов. Попробуйте посчитать, сколько это будет в гигабайтах.

'use strict';
try {
  var str = 'e';
  for (var i = 0; i < 100; i++) {
    str += str;
  }
  console.log('попытка');
} catch (e) {
  console.log('ошибка');
}
// Оставшаяся синхронно выполняемая часть кода.
console.log('остаток');
console.log(str.length);

'use strict';
try {
  var str = 'e';
  for (var i = 0; i < 10; i++) {
    str += str;
  }
  console.log('попытка');
} catch (e) {
  console.log('ошибка');
}
// Оставшаяся синхронно выполняемая часть кода.
console.log('остаток');
console.log(str.length, str);

→ Ссылка