console.log(x) var x = 10;La consola me da indefinido pero se esperaba error de referencia
var es la forma antigua de declarar una variable en JS. Tiene algunas propiedades que debe considerar en comparación con lo que let y const le permiten hacer.
Su declaración de variable var x = 10 se elevará hasta la parte superior de la secuencia de comandos, ya que, por otro lado, el motor JS eleva una declaración de función durante la compilación. Sin embargo, SOLO se iza la declaración y la variable se asignará undefined hasta que le asigne otro valor manualmente usando el operador de asignación = .
El motor JS no arroja un ReferenceError porque su código se traduce (usando elevación) en
var x; console.log(x); x = 10; Al mismo tiempo, var no tiene el concepto de alcance de bloque, por lo que al mismo tiempo, el código a continuación funciona bien.
console.log(x); { var x = 10; }El código anterior se está traduciendo (usando elevación) a
var x; console.log(x); { x = 10; }Si una variable se usa en el código y luego se declara e inicializa, el valor cuando se usa será su inicialización predeterminada ( undefined para una variable declarada usando var, use const y let para evitar esto).