Esta función de flecha imprime la versión de cadena concatenada de la matriz correctamente:
var tahoe = { resorts: ["Kirkwood","Squaw","Alpine","Heavenly","Northstar"], print: function(delay=1000) { setTimeout( () => console.log(this.resorts.join(",")), delay ) } } tahoe.print() Si entiendo correctamente, si uso una función normal dentro de setTimeout , no funcionará, porque setTimeout requiere una función anidada que siempre se evalúa en el ámbito global, mientras que la matriz se define dentro del ámbito del objeto. Entonces se usa la función de flecha que funciona en el alcance del objeto.
Entonces, ¿cómo es que poner la función de print como función de flecha también invierte el problema nuevamente?
var tahoe = { resorts: ["Kirkwood","Squaw","Alpine","Heavenly","Northstar"], print: (delay=1000) => { setTimeout(() => { console.log(this.resorts.join(",")) }, delay) } } tahoe.print()esto no funciona El libro lo explica así:
¿Alguien puede explicar qué significa esto y por qué funciona así? ¿Cuál es la diferencia exacta entre los dos casos?