Tengo una pregunta sobre el mecanismo para hacer una cadena de alcance en JavaScript. En el navegador Chrome, los resultados de la cadena de alcance son diferentes según las variables de referencia o no.
Dejame mostrarte un ejemplo.
var A = 'Hello' function foo() { var B = 'World' function bar() { var A = 'Junhyunny' if (A) { const C = 'JavaScript' if (B) { const D = 'Post' function baz() { console.log(A) console.log(B) console.log(C) console.log(D) console.dir(baz) } } } baz() } bar() } foo()[[Scope]] , esperaba. var A = 'Hello' function foo() { var B = 'World' function bar() { var A = 'Junhyunny' if (A) { const C = 'JavaScript' if (B) { const D = 'Post' function baz() { // console.log(A) // console.log(B) // console.log(C) // console.log(D) console.dir(baz) } } } baz() } bar() } foo()[[Scope]] .baz se efectúa mediante la variable B, por lo que es necesario el alcance Block(foo) .foo , por lo que el alcance Closure(foo) es necesario.¿Hay alguna lógica de optimización para hacer una cadena de alcance? No puedo encontrar referencias para este fenómeno.