Как работает стрелочная функция в JS
Вот есть код который выполняет отрисовку фреймов из спрайта. Но не понятен момент со стрелочной функцией. Мы создаем стрелочную функцию без параметров и вызывает методы. А затем в window.requestAnimationFrame(loop) мы передаем нашу стрелочную функцию, но как? Как мы смогли передать функцию когда не закончили ее тело цикла?
start() {
let loop = () => {
this.update();
this.render();
window.requestAnimationFrame(loop);
}
window.requestAnimationFrame(loop);
}
Ответы (1 шт):
Автор решения: Alex Krass
→ Ссылка
Переменные вычисляются в момент выполнения функции просмотром области видимости. Поэтому подставив заранее имя какой-то переменной, мы не получим ошибку, пока функция не начнет выполняться.
let loop = () => {
print(someVariable);
}
//loop(); // приведет к ошибке т.к. не сможет найти print
let print = (param) => {
console.log(param);
}
//loop(); // приведет к ошибке т.к. не сможет найти someVariable
someVariable = "ok";
// теперь все нормально, переменные будут вычислены тут и на этой точке они уже существуют.
loop();
То, что скрывается за переменной, функция или что-то еще, значения в данном случае не имеет.