En JavaScript, ambos están relacionados con el espacio de memoria y existe una diferencia muy simple entre ellos. Si el nombre de la variable a la que se accede no existe en el espacio de memoria, entonces no estaría definido, y si existe en el espacio de memoria pero no se le ha asignado ningún valor hasta ahora, entonces no estaría definido.
undefined: Es una palabra clave de JavaScript que tiene un significado especial. Todo lo que tenga un espacio en la memoria contendrá indefinido hasta que le asignemos un valor a ese espacio de memoria.
Comprendamos cómo se ejecuta el código JavaScript para ver una imagen más clara. Todo en JavaScript ocurre dentro del contexto de ejecución. El contexto de ejecución es la pequeña sección separada donde se ejecuta el código y las variables obtienen su espacio de memoria.
El código JavaScript se está ejecutando en dos fases ,
- La primera es la fase de asignación de memoria durante la cual todas las variables y definiciones de funciones se almacenan dentro del montón de memoria. El JavaScript asigna undefined a cada variable en esta fase.
- El segundo es un hilo de la fase de ejecución, durante este se está ejecutando el código escrito dentro del archivo JavaScript.
Cada variable mantiene el valor indefinido hasta que el programa llega a la línea donde le hemos asignado esa variable. Después de esa línea, el valor indefinido de la variable se reemplaza por el valor original.
Ejemplo 1: se creará el contexto de ejecución global y en la fase de asignación de memoria, la var a obtendrá espacio en la memoria y JavaScript le asignará undefined . Durante el hilo de ejecución, JavaScript encontrará la primera línea console.log(a) y como no hemos asignado el valor para a, se imprimirá undefined en la consola. En la línea siguiente, hemos asignado 5 a a, por lo que la variable a ya no está indefinida . Ahora contiene el valor 5. Entonces, la próxima vez que accedamos a la variable a, no se evaluará como indefinida. Entonces imprimirá el valor real de a.
HTML
<script> console.log(a); var a = 5; console.log(a); </script>
Salida (en consola):
undefined 5
Puntos adicionales:
- Si está asignando una llamada de función a una variable y esa función no devuelve nada, la variable se volverá indefinida .
- Puede asignar explícitamente undefined a cualquier variable, pero no es una buena práctica usar palabras clave de idioma de la forma en que no se espera.
no definido: en JavaScript, es uno de los errores de referencia que arrojará JavaScript cuando alguien acceda a la variable que no está dentro del montón de memoria.
Ejemplo 2: en primer lugar, se creará un contexto de ejecución global y, en la fase de asignación de memoria, la variable «a» obtendrá espacio en la memoria y, de forma predeterminada, JavaScript asigna undefined a «a» . Durante el hilo de ejecución, «console.log(a)» se imprimirá como indefinido. En la siguiente línea, hemos asignado 5 a la variable a. En la consola, se imprimirá 5. En la última línea, cuando JavaScript encuentra «console.log(b)», busca «b» dentro del montón de memoria del contexto de ejecución pero no está disponible, el motor JS arrojará el » Error de referencia » con un mensaje de » b no está definido “. El JavaScript detendrá la ejecución cuando encuentre un error de referencia.
HTML
<script> console.log(a); var a = 5; console.log(a); console.log(b); </script>
Producción:
Diferencia entre indefinido y no definido
indefinido | no definida |
---|---|
Funciona como cuando declaramos una variable en el código pero no asignamos el valor antes de imprimir el valor de la variable | Funciona como cuando no declaramos la variable y tratamos de llamar a esa variable. |
Publicación traducida automáticamente
Artículo escrito por mrtwinklesharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA