scopeEl scope (alcance) indica dónde existe una variable y desde dónde puedes usarla.
No todas las variables viven en todos lados.
Aquí:
nombre está fuera de la función, por eso también se puede leer dentro.mensaje está dentro de la función, por eso fuera no existe.Pensarlo así evita muchos errores de "variable no definida".
Intentar usar fuera de la función una variable que nació dentro:
Pregunta guía:
Ese bloque marca su alcance.
Crea una variable global y una variable local dentro de una función.
Muestra ambas dentro de la función y comprueba qué pasa si intentas usar la local fuera.
Entender scope te ayuda a que tu código sea más predecible y menos frustrante...