tengo este codigo
var key = "outer value"; let obj = { key:"obj value", func:()=> this.key, } console.log(obj.func());Pero cuando la var se cambia a let, el resultado no está definido. Por favor guía.
let key = "outer value"; let obj = { key:"obj value", func:()=> key, } console.log(obj.func()); //--> Outer Value var key = "outer value"; let obj = { key:"obj value", func:()=> key, } console.log(obj.func()); //--> Outer ValueLa respuesta sería la misma incluso si no se usa esta palabra clave
var key = "outer value"; let obj = { key:"obj value", func:()=> key, } console.log(obj.func());Una función de flecha no tiene esto en esto, siempre usa padre esto
Su código funciona porque la clave es de alcance global (esto)
let key = "outer value"; let obj = { key:"obj value", func:()=> key, } console.log(obj.func());Esto no funcionará porque la clave es un ámbito local que no está dentro de este
function test() { var key = "outer value"; let obj = { key: "obj value", func: () => this.key, }; console.log(obj.func()); // undefined } test();Esto funcionará
function test() { this.key = "outer value"; let obj = { key: "obj value", func: () => this.key, }; console.log(obj.func()); // outer value } test();