andrei500
@andrei500
Middle Frontend Vue.js

Как определяется контекст в стрелочной функции?

Пытаюсь сформулировать для себя четкое описание отличия стрелочных функций от обычных.
Правильно ли я понимаю. Что значение this в стрелочной функции, вычисляется в момент объявления функции
let timer = {
   sec: 0,
   tick() {
      console.log(this.sec++)
   },
   run() {
      setInterval(() => this.tick(), 1000)     /* this определяется на этой строке */
   }
}

Грубо говоря в колбек передается "() => timer.tick()".
А в обычных функциях this вычисляется в момент вызова функции
let timer = {
   sec: 0,
   tick() {
      console.log(this.sec++)
   },
   run() {
      setInterval(function(){
         this.tick()                /* this определяется не на этой строке, а в момент вызова колбека */
      }, 1000)
   }
}
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
bootd
@bootd
Гугли и ты откроешь врата знаний!
setInterval(function(){ // Создаёт новый контекст и this пляшет от него
         this.tick()
      }, 1000)


() => this.tick(), 1000) // Стрелочные функции не создают своего контекста, от чего this пляшет в данный момент от объекта timer
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы