función de flecha y esto

Estoy navegando por Twitter y encontré este tweet:

Aquí está el código del tweet:

const double = () => this.x * 2; const numDouble = double.bind({ x: 5 }); numDouble(); 

Cuando ejecuta este fragmento en la consola producirá NaN. ¿Cómo? El autor está vinculando explícitamente el valor de x, pero aún muestra NaN.

El autor también está especificando que la función de flecha no puede unir esto. Como sé que la función de flecha vincula léxicamente el valor de este formulario que rodea el scope. Entonces, ¿por qué el autor lo está reclamando?

Por favor aclare mis dudas y gracias de antemano por la ayuda.

Las funciones de flecha no unen this . Según MDN:

Sin enlace de esto

Hasta que la flecha funcione, cada función nueva define su propio valor (un nuevo objeto en el caso de un constructor, indefinido en llamadas a funciones de modo estricto, el objeto de contexto si la función se llama como un “método de objeto”, etc.). Esto resultó ser molesto con un estilo de progtwigción orientado a objetos.

Así que this en su ejemplo será la window objeto global que aparentemente no tiene una propiedad llamada x .

Ejemplo:

 function foo() { let arrow = () => { console.log(this); // will use foo's this as arrow will never have its own this } arrow.call({"x": "x"}); // ... even if we specify it using bind, call, or apply } foo.call({"y": "y"}); // specifying the this for foo (this value will eventually be used by arrow because it will be availbale in its scope)