This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Una pregunta. ¿Por qué type of null retorna object? ¿Eso quiere decir que null tiene propiedades como cualquier object?
No. Calavera. Calavera. Calavera. Oye, es una muy buena pregunta y además mucha gente lo dice mal.
He visto, he leído libros de JavaScript que esto lo tienen mal. La pregunta es bastante buena, ¿vale? Y es esta, ¿no?
¿Por qué type of null? ¿Por qué type of null? Es object. Porque si sabéis los tipos primitivos de JavaScript, tendríamos string, number, bolean, el undefined, el null y el symbol también.
¿Se me escapa alguno? Alguno creo que se me ha olvidado porque son 7, 3, 4, 5, 6, ¿cuáles se me ha olvidado? Se me ha olvidado uno. Ahora no sé cuáles. ¿Cuáles se me ha olvidado? ¿Alguien sabe? Ahora no me acuerdo.
¿Volean, undefined, null, symbol? Alguno se me ha olvidado y no debe ser... Ah, el viking. Ahí está, el viking. Es que no se usa mucho el viking.
Pero es verdad, el viking. Ahí está, son 7. Vale. Entonces, null, como podéis ver, es un tipo primitivo. ¿Qué quiere decir que sea un tipo primitivo?
Un tipo primitivo quiere decir que, uno, que no se guarda por referencia. O sea, cuando guardáis una variable, se hace por valor, las comparaciones se hacen por valor,
los parámetros se pasan por valor, no por referencia, que sería como funcionan los objetos, los arrays, las funciones y todo esto.
Así que, los primitivos, digamos que se le llama primitivo porque es como lo más básico a la hora de representar un dato.
Como la forma más pura de representar un dato. Esto, no sé si lo sabíais, ¿eh? Esta es pregunta de entrevista.
¿Por qué se le llaman tipos primitivos? Bueno, es un poco filosófico.
Pero bueno, es la forma más pura de representar un dato. Una cadena de texto, la forma más pura que se te puede ocurrir es un string.
Y el null es también un tipo primitivo. ¿Vale? Null es un tipo primitivo.
Pero ¿qué pasa? Que la gente confunde entre que sea un tipo primitivo a que el typeof diga object.
Y ahora os voy a explicar por qué, ¿no?
Si ponéis un typeof de una cadena, pues esto os da string. ¿Vale?
Si dais un typeof de dos, pues esto os dice number.
Typeof de true, pues esto os dice bolean.
Bueno, a ver si van saliendo. Vale.
El typeof de undefined, estos serían defined.
Pero, bueno, si aquí podría estar todo el día, ¿no?
Este debería ser symbol.
Bueno, en minúscula, ¿eh? Que tienen que ser esto en minúscula.
Typeof de dos n, pues este sería el viking.
Pero el typeof null es un caso un poco especial porque da object.
¿Por qué da object? Da object. ¿Vale? Es un poco raro.
A la gente le vuelan un poco la cabeza.
Y es un poco, ostras, ¿por qué? ¿Por qué?
¿Por qué es? Ay, perdón, que...
Bueno, perdón, ¿ves? No ha petado porque como undefined la había puesto sin D, tampoco existía.
Entonces, typeof null es object.
¿Y por qué es object? Pues os vais a reír con la explicación,
pero la explicación es muy sencilla.
Por un bug.
Hay un bug en JavaScript que es histórico que hizo que typeof null diese object.
Y es un bug de un byte.
Es un bug en el que el byte no está apuntando donde debía haber apuntado desde el principio.
Entonces, es un bug que nunca se ha solucionado porque ahora podría romper potencialmente mucho código que hay ahí fuera.
O sea, si no me creéis a mí, si no me creéis a mí porque dice, bueno, está chorrada.
Hay una historia muy buena, un artículo muy bueno que te explica toda la historia,
que es esta, la del doctor Axel Rashmayer, ¿vale?
Que lo tenéis por aquí y que os explica un poco esto, ¿no?
Que os da hasta incluso el código en C para que entendáis por qué da null object, ¿vale?
Pero, como dice en el artículo, ¿ves?
Dice lo que incorrectamente sugiere que null es un objeto.
No lo es.
Es un valor prometivo, consulta mi blog, no sé qué.
O sea, que no lo es.
Lo que pasa es que, ¿veis?
Aquí podemos ver el tema de los bytes, ¿no?
Cómo funciona.
Pues esto es un objeto, un enter y un doble, un este, los diferentes tipos.
Y por un error se le puso el 0, 0, 0, que era el de objeto.
Ya está.
Ya está.
Esa es la explicación.
No digáis cosas que he visto en libros por ahí sueltos, que he visto verdaderas salvajadas,
como diciendo que null sí que es un objeto, que es un objeto especial.
No sé, no es especial.
Hay un bug.
Es lo que hay.
Mira, así es este lenguaje de pronación y hay que quererlo como es.
Pero no inventemos explicaciones raras porque la explicación es mucho más sencilla.
Hay un bug, nunca se ha solucionado por eso y no tiene nada que ver con un objeto.
Es un valor primitivo y punto, pelota.
Ya está, ¿vale?
Y es importante.
¿Y por qué?
Claro, dirás, pero joder, mi duda, tampoco es tan importante.
Pero sí es importante porque si consideramos que null es un objeto, deberíamos pensar en
que los valores de null pasarían por referencia y no lo hacen.
Entonces, súper importante tenerlo en cuenta, ¿vale?
Así que sí, son estas cosas un poco locas de JavaScript.
Pues mira, oye, hemos empezado por todo lo alto del JavaScript, Willy, porque me parece
muy interesante, muy poca gente realmente sabe por qué esto y además podéis ver incluso
dónde está el error aquí nativo.
Esta es de las primeras versiones, ¿vale?
Y podéis ver ahí si es un número, entonces número, si no string, si no booleano.
Y aquí, aquí es donde estaría, me parece, el error.
Aquí es donde estaría un poco el error que al final este else, claro, es el que te ponía
el object y ahí acababa y no debía, ¿vale?
Ahora lo saben 538 personas más.
Sí, me alegro, hombre, la verdad, ¿eh?
Mira, ¿y si me dicen que estoy equivocado, retraigo mi oferta?
Hombre, no, pero le puedes pasar el artículo.
Primero, le puedes decir, sí, null es un objeto especial, tienen una paguita por ello,
sí, sí.
No, le puedes decir, oye, no, yo he leído un artículo de una persona bastante reputada
que habla del tema este y sé que no es así.
Bueno, a ver, tampoco hace falta discutir mucho las cosas, ¿eh?
¿Por qué?
Porque la gente a veces puede ser, la gente es muy piel fina con el mundo de la programación.
A la gente le gusta cabrearse, no, yo tengo la razón y tal.
Bueno, yo prefiero documentarme y hablar con propiedad y no decir lo que yo opino que es y ya está.
Pues me lo dejo Midu, no.
A ver, me lo dijo Midu, no es una explicación buena, ¿vale?
De cómo hacer las cosas.
No, me lo ha explicado Midu.
No, lo he visto en un vídeo de YouTube.
Si no lo sabéis explicar, entonces jodido, jodido.
Bueno, voy a hacer la publicidad aquí en Discord, ¿vale?
Que estamos aquí en directo.
Hola, everyone.
Estamos en directo con las noticias de JavaScript.
De JavaScript.
Ya hemos explicado por qué Null es un objeto especial.
A ver si hay algo.
Y ahora vamos con trucos de Visual Studio Code y noticias de...