Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

212
Views
¿El tipo de datos "indefinido" tiene solo un valor en JavaScript?

La documentación de JavaScript dice que el tipo de datos Null tiene solo un valor:

El tipo Nulo tiene exactamente un valor: nulo. Consulte nulo y Nulo para obtener más detalles.

Pero no dice que el tipo de datos undefined tenga un solo valor:

Una variable a la que no se le ha asignado un valor tiene el valor indefinido. Consulte indefinido e Indefinido para obtener más detalles.

Entonces, ¿el tipo de datos undefined tiene solo un valor o más de un valor?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Hay exactamente un valor del tipo undefined . Hay varias cosas que pueden evaluarse como undefined , como una variable no asignada, una propiedad faltante o el operador void , entre otras:

 let x; const obj = { }; const voidReturn = void 0; console.log(typeof x, x); console.log(typeof obj, obj); console.log(typeof voidReturn, voidReturn);


Para mayor claridad, hay un valor undefined pero también existe la propiedad global undefined . A diferencia de null , en realidad es parte de window . Entonces, si el literal undefined se usa en el código, se refiere a esa propiedad:

 console.log("undefined" in window)

En el pasado era posible cambiarlo directamente window.undefined = 42; que luego produciría un resultado extraño si se usa con undefined === void 0 . La propiedad global se ha vuelto inmutable para evitar esto, sin embargo, todavía es técnicamente posible evitar la inmutabilidad y proporcionar su propio valor para undefined si oculta la propiedad:

 function foo(undefined) { console.log(undefined === 42); console.log(typeof undefined); console.log(undefined === void 0); } foo(42);

En comparación, null es una palabra clave de idioma y no se puede sobrescribir de ninguna manera.

about 4 years ago · Juan Pablo Isaza Report

0

En caso de duda, vaya a la especificación : :-)

El tipo indefinido

El tipo Undefined tiene exactamente un valor , llamado undefined . Cualquier variable a la que no se le ha asignado un valor tiene el valor undefined .

Entonces: el tipo Indefinido tiene solo un valor.


Debo señalar que hay dos formas para que una variable obtenga ese valor, así que tal vez esa sea la confusión. Las dos formas son:

  1. Porque la variable nunca ha tenido nada asignado (como señala la especificación).
  2. Porque a la variable se le ha asignado explícitamente undefined (directa o indirectamente).

Ejemplo:

 let a; // `a` has the value `undefined` because it has never been assigned a value console.log(typeof a); // undefined let b = undefined; console.log(typeof b); // undefined let c = void 0; console.log(typeof c); // undefined let d = (() => { })(); console.log(typeof d); // undefined const obj = {}; let e = obj.propertyThatDoesntExist; console.log(typeof e); // undefined

b , 'c', 'd' y e tienen el valor undefined porque se les ha asignado ese valor:

  • b se asigna undefined mediante el uso de la variable global undefined
  • c se asigna undefined utilizando el resultado del operador void , que siempre es undefined
  • d se asigna undefined porque se le asigna el valor de retorno de una función que nunca emite una declaración de return con un valor; la función por lo tanto devuelve el valor undefined
  • e se asigna undefined porque se le asigna el valor resultante de una expresión de acceso de propiedad ( obj.propertyThatDoesntExist ) para una propiedad que no existe; el resultado de un acceso de propiedad en una propiedad que no existe es undefined .

Esa es una lista razonable de formas en que la variable puede asignarse undefined ; Seguro que hay más, es solo una muestra.

Consulte también la respuesta posterior de VLAZ , que contiene información realmente buena. Por ejemplo, señala que null es una palabra clave, pero undefined es solo una variable global.

about 4 years ago · Juan Pablo Isaza Report

0

¡Buena pregunta! Tomado del libro que no conoce Javascript: indefinido es en sí mismo un valor que se usa cuando no hay valor. Es una propiedad en el objeto global.

Por ejemplo, citando el libro aquí:

 var a; typeof a; // "undefined" var b = 42; var c; // later b = c; typeof b; // "undefined" typeof c; // "undefined"

a es indefinida porque no le hemos dado un valor, pero incluso en el caso de que definamos el valor de una variable como otra variable indefinida, sigue siendo indefinida. En este caso, b y c probablemente apunten a esa propiedad en el objeto global.

Recomiendo leer los documentos de Mozilla y el capítulo de YDKJS sobre tipos y valores https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined

Tipos YDKJS

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!