Пытаюсь сформулировать для себя четкое описание отличия стрелочных функций от обычных.
Правильно ли я понимаю. Что значение 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)
}
}