const run = initialize;
run(1);
run(1);
run(1);
function initialize(index) {
console.log('runs only once');
return function(index) {
console.log('useless code to use closure to make sure initialize only runs once');
return index;
}
}
Это не работает, но я не совсем уверен, почему, потому что приведенный ниже код работает так, как задумано, и выполняет код внутри внешней функции только один раз при выполнении внутреннейфункционировать несколько раз.
const getIndex = bigStuff();
getIndex(500);
getIndex(600);
getIndex(700);
function bigStuff(index) {
const myArray = new Array(300).fill('3');
console.log('created once');
return function(index) {
console.log('calling several times');
return myArray[index];
}
}
Второй фрагмент кода возвращает:
created once
calling several times
calling several times
calling several times
Пока возвращается первый фрагмент кода:
runs only once
runs only once
runs only once
Может кто-тообъясните мне, что движок Javascript делает в фоновом режиме? Потому что я чувствую, что результат будет отличаться в зависимости от того, что внутри внутренней и внешней функций, когда вы используете замыкания.