JavaScript Programación avanzada (4.ª edición) Lectura Compartir Notas Grabación
Aplicable a camaradas que recién comienzan
contexto de ejecución
El contexto de una variable o función determina a qué datos pueden acceder y cómo se comportan.
En el navegador, el contexto global es lo que a menudo llamamos
el
objeto ventana ( el Capítulo
12
lo presentará en detalle), por lo que todas
las variables y funciones globales definidas a través de
var
se convertirán en las propiedades y métodos del objeto ventana .
Ejemplo:
var color = "blue";
function changeColor() {
let anotherColor = "red";
function swapColors() {
let tempColor = anotherColor;
anotherColor = color;
color = tempColor;
// 这里可以访问 color、anotherColor 和 tempColor
}
// 这里可以访问 color 和 anotherColor,但访问不到 tempColor
swapColors();
}
// 这里只能访问 color
changeColor();
El código anterior implica
3
contextos:
Contexto global ,
contexto local para
changeColor()
y contexto local para s wapColors() .
- El contexto interno puede acceder a todo en el contexto externo a través de la cadena de ámbito, pero el contexto externo no puede acceder a nada en el contexto interno.
- Cada contexto puede ir al contexto de nivel superior para buscar variables y funciones, pero ningún contexto puede ir al contexto de nivel inferior para buscar
declaración de variables
Declaración del alcance de la función usando var
- Al declarar una variable con var , la variable se agrega automáticamente al contexto más cercano.
- Las declaraciones de var se colocan en la parte superior de la función o el alcance global, antes de todo el código en el alcance - 'elevación de variables'
Declaraciones de alcance de bloque usando let
- La nueva palabra clave let en ES6 es muy similar a var , pero su alcance es a nivel de bloque , que también es un concepto nuevo en JavaScript
- El alcance a nivel de bloque está delimitado por el par de llaves más cercano {}
-
Los bloques if , los bloques while , los bloques de funciones e incluso los bloques individuales también son el alcance de las variables de declaración let.
Otra diferencia entre let y var es que no se puede declarar dos veces en el mismo ámbito. Las declaraciones de var duplicadas se ignoran y las declaraciones de let duplicadas generan un SyntaxError .