This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Primera curiosidad, primera anécdota de JavaScript y de estos 25 años de JavaScript.
La primera. La primera serÃa, creo yo, que ayer se celebró el aniversario
porque se entiende que el 4 de diciembre nació JavaScript.
Y la primera curiosidad serÃa que esto no es correcto del todo.
Esto no es correcto del todo.
De hecho, aunque sà que tenemos el anuncio, y es impresionante cuando te pones a buscar en internet,
las cosas que uno puede encontrar.
Esta noticia de Netscape & Sun, Anvel, JavaScript, esta es de 1995, del 30 de noviembre.
O sea, que aquà sà que parece que tiene sentido lo que se comenta,
de que en diciembre, el 4 de diciembre, por fin se sacó oficialmente JavaScript.
Pero lo cierto es que, de hecho, esto es una cosa que comenta el propio Brendan Haidt,
que es el creador de JavaScript, en realidad en mayo ya habÃa nacido como tal JavaScript.
Lo que pasa es que no se llamaba JavaScript.
Al principio se llamaba Mocha, luego pasó a llamarse LiveScript,
y luego por un tema más de marketing, como dice por aquÃ,
porque de hecho dice aquà que sà es verdad,
que son 25 años lo que hace la marca registrada de JavaScript,
pero que el cumpleaños fue en mayo y que ya lo celebró,
que fue en realidad esto de JavaScript fue como, digamos, una estratagema de marketing,
porque Java era muy popular en ese momento,
y lo que estaban intentando hacer era como que JavaScript era como la muletilla,
digamos, la muletilla de Java.
Asà que lo que intentaron era utilizar, digamos, la popularidad de Java para introducir JavaScript.
De hecho, hubo un acuerdo con Sam Microsystems,
que era la dueña de Java en ese momento, para utilizar el nombre, ¿no?
Y lo que se estaba intentando era hacerle una pinza un poco a Microsoft,
que intentaba, y menos mal que no le salió,
él intentaba utilizar Visual Basic para la web y sus tecnologÃas más propietarias.
Asà que, en este caso, sà que es su aniversario,
pero a la vez como que no es su aniversario,
el propio creador, el que se pasó 10 dÃas haciendo JavaScript,
pues parece que no está del todo de acuerdo de que sea su aniversario.
Asà que esta serÃa la primera curiosidad, ¿vale?
Que realmente la primera, primerÃsima versión de JavaScript se llamó Mocha,
estuvo con versiones beta,
luego LiveScript estuvo como dos o tres meses asÃ,
hasta que en diciembre se lanzó, ahora sÃ, como JavaScript.
Y ahà tenemos la noticia y todo, que lo comenta.
Es muy interesante la noticia.
Aquà podemos ver que habÃa 28 compañÃas,
que incluÃa América Online, Apple Computer,
Macromedia, que más adelante Macromedia lanzó Flash,
y Oracle, que iban a utilizar JavaScript
como un lenguaje que tenÃa un estándar abierto
para incorporar en futuros productos.
Súper interesante.
La verdad es que cuando las cosas se ven en perspectiva,
pues uno se entera de cada cosa que tela.
Asà que no sé si esta os la sabÃais,
de que realmente esto de que sean 25 aniversario,
en realidad era mayo,
pero al final se ha llamado JavaScript
y nuestro dÃa a dÃa ya nos hemos habituado
a ese nombre de JavaScript.
Número dos, realmente se creó JavaScript en 10 dÃas.
Hay como esta leyenda urbana
de que JavaScript se creó en 10 dÃas.
Y lo cierto es que sà que se creó en 10 dÃas
la primera versión.
Se hizo una primera versión en la que este señor,
Brendan Huyck, estuvo a tope.
Dice que no durmió nada para estar desarrollando
este lenguaje de programación.
El problema, además de que lo tenÃa que hacer muy rápido
porque crean una primera versión,
es que querÃan que tuviese una sintaxis parecida a Java,
que por otro lado le gustarÃa recuperar cosas
de otro lenguaje, de otro y de otro.
QuerÃan un montón de cosas.
Y esa es una de las razones por las que uno
tiene algunos problemillas, JavaScript,
que ha ido heredando versión tras versión.
El hecho este de la streak equality
o la regular equality,
de que puedes comparar un string con un número.
Y esto lo vamos a ver luego por qué lo hizo,
por qué se creó JavaScript y por qué se introduzco esto.
Se introdujo esto.
Y por otro lado, esto de que son 10 dÃas,
es verdad que son 10 dÃas la primera versión.
Pero la primera versión no es ni de lejos
la que conocemos ahora
y tampoco la que vimos a finales de ese año.
Como os digo, esos 10 dÃas ocurrieron en mayo,
no ocurrieron en diciembre.
Asà que ya os podéis imaginar que la versión
que apareció en diciembre
no es exactamente la misma
que la primera versión que vimos en mayo.
Pero aún asÃ, muchas de esas cosas
que ocurrieron en esos 10 primeros dÃas
sà que se han ido replicando con el tiempo
y se han quedado un poco ahÃ, en la base.
Asà que es cierto que fueron 10 dÃas a tope,
pero no es que la versión de JavaScript
que conocemos ni la que se lanzó
al final en diciembre
se hizo en 10 dÃas.
No, es que se dejó y se paró ahÃ.
De hecho, al principio JavaScript
como que tenÃa versiones.
La versión 1.0, la versión 1.1, 1.2.
Esto ahora no es exactamente asÃ,
pero esas pequeñas versiones
sà que tenÃan ciertas mejoras
y se iba cuidando.
Como al principio no era tan interesante
como ahora, ¿no?
Que ahora, claro,
cuando no se quiere romper la compatibilidad,
si os fijáis,
todo lo que se hace en ECMAScript,
JavaScript,
es como muy retrocompatible.
No se rompe fácilmente la compatibilidad.
No se introducen cosas
que puedan romper la compatibilidad.
O sea, son siempre opt-in.
Quiere decir,
si puedes utilizar las constantes o LED, bien,
pero cómo funciona, por ejemplo,
el método find del array,
no te van a cambiar la funcionalidad de golpe.
¿Vale?
Y en aquel momento
sà que pasaban ciertas cosas asÃ,
aunque se evitaba,
pero sà que habÃa esa versión 1.0
y se llegó a crear la 2.0
y sà que podÃa ocurrir eso.
Y se llegó a pensar incluso
en la etiqueta script
poder indicar tú
qué versión de JavaScript querÃas utilizar.
Menos mal
que eso se quedó en nada.
Asà que, bueno.
Número 3.
Número 3.
Curiosidad número 3.
¿Realmente no tiene nada que ver con Java?
Porque hay un chiste, ¿no?
Que es JavaScript.
A ver,
JavaScript,
que quede clarÃsimo.
JavaScript claramente
no es una versión de Java
para programar en la web
y hasta cierto punto
no tiene nada que ver con Java.
Y digo entre comillas,
porque en realidad
ese chiste de que
Java a JavaScript
es lo que mar a martillo,
que hace mucha gracia,
en realidad...
¡Aaah!
¡Ojo cuidado!
¡Ojo cuidado!
¿Por qué?
Porque realmente
tiene más que ver
de lo que pensamos, ¿vale?
O sea, no es que
la gente lo confunde
por el nombre,
pero es cierto
que JavaScript,
alguna de sus referencias
fue Java.
Por ejemplo,
la sintaxis
en llaves,
eso se hizo
justamente para buscar
esa semejanza
con Java.
No se hizo por otra cosa.
De hecho,
habÃa otros lenguajes
en ese momento
que no era exactamente asÃ.
O sea,
hubo una influencia directa
y hay un montón
de influencias,
no es la única.
De hecho,
hay otra cosa
que muy poca gente sabe
y es que el objeto
date
que tenemos en JavaScript,
en realidad,
eso era un port
directo
de la clase
date
de Java.
Entonces,
esto de decirte
no tiene absolutamente
nada que ver,
hombre,
nada,
nada que ver,
tampoco es asà exactamente.
Hubo una influencia
y de hecho
es lo que le pidieron
a Brendan.
Le dijeron,
no, no,
tiene que de alguna forma
influirte
el hecho
de que hagamos esto
porque queremos
que puedas ver,
queremos que la gente
realmente entienda
cómo hacer la sintaxis,
no aprenderla de cero,
no hacer algo
totalmente nuevo.
Entonces,
por eso,
la sintaxis fue
uno de los,
digamos que fue
el gran referente
a la hora
de hacer JavaScript.
Pero luego aquÃ
podemos ver
algunas de las influencias,
¿veis?
Aquà tenemos Java
que es una de las influencias,
Java,
la sintaxis,
pero tenemos los strings,
arrays,
regular expressions,
es una cosa que
se introdujo
desde Perl,
pero Scheme,
Scheme,
que era un lenguaje,
creo que Scheme
era uno de los lenguajes
que tenÃa en ese momento
Oracle,
lo podemos mirar
un momento,
Scheme,
Wikipedia,
a ver si este
era el que era
un lenguaje
de programación funcional.
Si no es Scheme,
no,
Scheme no es el de Oracle,
el que es de Oracle
es Self,
es Self,
Oracle Language Programming,
como veis,
tuvo un montón,
pero un montón
de diferentes,
uy,
he puesto Oracle
y no le ha gustado,
Object Oriented Programming,
asà que,
esto de heredar
de prototipos,
ah,
Sun Microsystems,
claro,
es que como Oracle
compró Sun,
pues ya me he quedado
ahÃ,
vale,
Sun Microsystems,
vale,
pues como podemos ver
el tema de heredad,
la herencia de prototipos,
esta tan mÃtica
de JavaScript,
esto fue algo
que obtuvo de Self,
al final ha tenido
como diferentes,
no sé,
influencias de lenguajes
de programación
y uno,
por supuesto,
muy importante
fue Java,
que no es una copia
de Java como tal,
no es que sea exactamente
igual que Java
y no es que sea un calco
de Java para la web,
pero no podemos decir
que no haya tenido
una influencia,
¿vale?
No,
eso no creo
que sea correcto,
pero bueno,
ahà se queda,
Decisoo dice que
Java es puro amor,
puro amor,
bueno,
yo hace tiempo
la verdad que no toco Java,
toqué Java
en la universidad,
tuve una primera,
la verdad que fue
un primer contacto
con los lenguajes
de programación
y no lo recuerdo
muy interesante,
pero no sé
si fue tanto de Java
o fue las clases
que no eran muy buenas,
también es que Eclipse
en aquel momento,
yo estoy hablando
de 2003,
no era lo que tenemos
ahora por un ID
en condiciones,
costaba muchÃsimo
que arrancase,
tardaba,
parecÃa como cargar
ahora,
no sé,
algo con cassette,
porque tardaba casi
40 segundos,
45 en iniciarse
el programa,
era muy,
muy,
muy lento,
pero bueno,
que seguro
que ha mejorado bastante
y que ya no tiene
nada que ver,
asà que,
bueno,
a ver,
tengo por aquÃ
otra influencia,
a ver,
asÃ,
este es el que os he enseñado,
el que os he enseñado,
vale,
entonces,
¿por qué se creó
JavaScript?
Esta es otra,
¿no?
¿Por qué se creó JavaScript?
¿Cuál era en realidad
el motivo por el que querÃan
utilizar JavaScript?
¿Por qué necesidad habÃa?
Vale,
pues,
en aquel momento,
si tiramos para atrás,
en 1995,
Java tenÃa muchÃsima popularidad,
pero el utilizarlo en la web
no era tan sencillo,
entonces,
es cierto que se le podÃa,
se podÃa utilizar ya en web
y de hecho,
se estaba intentando introducir,
pero,
claro,
la complejidad que tenÃa
para los diseñadores web
era muy elevada,
asà que la idea de JavaScript
era como doble,
por un lado,
era darle interactividad
a las páginas web,
porque de esta forma,
pues,
podrÃan tener una experiencia
más rica,
aunque lo cierto es que
el primer año se utilizó
más que nada para enseñar
pop-ups con publicidad,
tal cual,
pero,
también tenÃa otro objetivo
y el otro objetivo
que tenÃa,
básicamente,
era poder darle fácilmente
una forma de añadir Java
a tu página web,
o sea,
podÃas utilizar JavaScript
y de forma que podÃas,
pues,
manejar algún tipo de datos
y tal,
y luego introducir
el applet este de Java
para que pudiese ya iniciarse
con los datos
que hubieras recogido
con JavaScript.
Asà que la idea era,
más que nada,
no era tanto de,
oh no,
JavaScript,
pues,
era la leche y tal,
sino que era,
para diseñadores web,
que fuese algo sencillo
de utilizar,
que no fuese tan core
como a lo mejor
lo era Java,
y luego,
además,
era como,
era un caballo de Troya
que se querÃa introducir
en la web justamente
para asegurarse
la,
pues,
el reinado
de Java en la web.
Luego verÃamos que,
por un lado,
Java fue un poco rechazado
por Internet Explorer,
a su,
lo que intentó Microsoft
en ese momento,
que tuvo una buena cuota
de mercado
a finales de los 90,
fue darle la espalda
a Java,
apostar más
por sus propias,
por su propio lenguaje
de programación,
por supuesto,
y luego finalmente Flash
como que le dio la patada
final a Java.
Asà que,
bueno,
no fue lo que esperó,
pero sin quererlo,
nos dejó JavaScript
que fue,
pues,
súper interesante.
Es interesante también
ver que
esa interactividad
que se buscaba,
en realidad también,
lo que ha influido
es como ese crecimiento
tan rico
de lo que podÃa hacer
JavaScript,
¿no?
Porque poco a poco
los diseñadores web
iban diciendo
que se les quedaba
un poco corto,
¿no?
Entonces,
siempre iban pidiendo
un poco más,
un poco más,
y esa evolución constante
que tenÃa
era la que hizo
que ya no se necesitase
tanto algo como Java,
¿no?
Que era más potente,
pero al final
era más complejo.
Asà que,
bueno,
¿qué más?
¿Qué más?
Me decÃs por aquÃ
esta muy buena,
la de Manuel Dávila,
dice este de,
esto es lo tÃpico,
¿no?
Y de hecho,
de esto vamos a hablar
justamente en la siguiente
curiosidad,
¿no?
Esto de array vacÃo
es igual
a la negación
de array vacÃo,
¿no?
O sea,
esta igualdad.
Y es que los tres iguales,
la igualdad de tres iguales
que ahora,
por supuesto,
ya conocemos,
de hecho,
vamos a verla aquÃ,
en esta web,
voy a poner esto más grande,
aquà tenemos esta igualdad,
¿no?
Que lo que hace
es convertir
el string en número
y ya está,
¿no?
Y dice,
vale,
pues ya está,
esto es un dos,
perfecto,
y la que comentaba Manuel,
pues es esta,
y esto también pasa
a ser true,
porque al final
esto es false,
y esto,
pues se pone a transformar,
¿no?
Y esto,
¿por qué pasa,
no?
Esta coerción de datos,
lo que está haciendo
es transformar los datos
por tipos diferentes
a los que se está expresando
en el lenguaje.
Y esto,
en realidad,
¿por qué se hizo,
no?
Porque,
además,
hay que saber
que esta igualdad,
la estricta,
no empezó a utilizarse
desde el principio.
Esta no existÃa
al principio
en el lenguaje.
Cuando se generó
JavaScript en 1995,
no tenÃamos
los tres iguales,
no los tenÃamos,
esto no existÃa,
solo podÃas utilizar
la igualdad regular.
¿Y por qué se hizo esto?
Pues como he dicho,
esto se hizo
porque se estaba pensando
en el programador
que iba a utilizar esto,
que iba a ser diseñadores web,
que no tenÃan
una gran,
unos grandes conocimientos
sobre programación,
¿no?
Entonces,
visualmente era más fácil
si un diseñador decÃa
que cuando querÃa comparar
un dos,
lo hiciese asÃ,
¿no?
Aunque tuviera una variable
o lo que sea,
para él conceptualmente
lo que se esperaba
de ese tipo
de programador diseñador
era facilitarle la vida.
Lo que se intentaba
era facilitarle la vida.
Asà que este error
que ya es mÃtico
en JavaScript,
no es un error,
es una feature
que tiene JavaScript
pero no muy querida,
pues es una de las
que ha estado coleando
durante mucho tiempo.
Igualmente,
lo que podemos decir
es que este tipo
de igualdad
que ya no deberÃas,
no deberÃas estar utilizando
en tu casa,
en tu código,
en tu empresa,
en ningún sitio.
No utilices esto,
¿vale?
No lo utilices.
Al final,
podemos utilizar hoy en dÃa
el Inters
para que nos avise
de que no tenemos
que utilizar
este tipo de igualdad.
Asà que,
lo que os recomiendo
es que estéis utilizando
siempre esta,
¿vale?
Que nos asegura
que estamos comparando
no solo el valor,
sino los tipos.
Porque el otro,
estamos como intentando
comparar solo los valores,
sin comparar los tipos.
Y si hace falta,
lo que voy a hacer
es convertir un tipo
a otro para poder
hacer la comparación,
¿vale?
Asà que,
ya os digo que esta igualdad
no llegó hasta años
más adelante,
¿vale?
Asà que JavaScript
al principio tenÃa
esta igualdad
y asà tuvo que vivir
la gente desde el principio.
Asà que cuando alguien
me ha dicho esto
de si me atreverÃa
a programar con el lenguaje
de 1995,
pues esto me costarÃa
porque es que lo tengo
ya escrito,
vamos,
a tope.
Pues vamos
con la siguiente curiosidad.
Y es que,
claro,
¿qué pasa?
Que JavaScript
empezó a ser
bastante interesante
y el problema
es que solo lo tenÃa
Netscape
porque Brendan Eich
lo hizo para Netscape,
no lo hizo para
todos los navegadores,
¿no?
Hoy en dÃa
lo tenemos como clarÃsimo
esto,
pero si va a estar
en todos los navegadores,
JavaScript está
en todos los navegadores,
tienen versiones
que soportan diferentes,
pero están todos los navegadores.
Pero en aquel momento
no era exactamente asÃ.
El caso es que
esto se pidió
para Netscape
y lo creó Netscape
y esto por eso
lo hizo en 10 dÃas
porque habÃa una batalla
de crear
un lenguaje
de scripting
como JavaScript
para los navegadores web.
Asà que
se creó JavaScript
con el nombre
de JavaScript
porque se llegó
a un acuerdo
en Netscape
con en aquel momento
Sam Microsystems
y ¿qué pasó?
Que Internet Explorer
vio una oportunidad
y dijo
¿qué pasa con esto?
Yo quiero esto también.
O sea,
esto es súper interesante
porque me voy a quedar
yo sin esto.
Asà que Microsoft
lo que hizo
es crear
su propio lenguaje
de scripting.
Pero claro,
no podrÃa decir
bueno,
y lo hicieron desde cero.
No, hombre.
En aquel momento
la verdad es que
hace 24 años
las cosas que se hacÃan
en la tecnologÃa
en informática
en general
eran brutales.
Y de hecho
sabemos las historias
de Apple
yendo a Xerox
y copiándose
lo de la interfaz.
Hay un montón
de historias de estas, ¿no?
Pues lo que hizo
Microsoft
con JavaScript
fue un poquito similar.
Al final
lo que hicieron
era crear uno
llamado Jscript,
¿vale?
Qué raro,
qué curiosidad,
le faltaban tres letras
por un tema
de marcas
porque no podÃa utilizar
la marca registrada.
Y además
lo que hizo
fue una ingenierÃa
inversa
de JavaScript.
Asà que lo que tenemos
con Jscript
es algo súper parecido
a JavaScript,
muy parecido.
No es exactamente
igual.
De hecho
habÃa algunas cosas
que cambiaban.
TenÃa el objeto
ActiveX
que Microsoft
metÃa en todos los sitios.
Y la primera versión
llegó en Internet Explorer
3.0.
Fue en agosto
de 1996.
Aquà podemos ver,
por ejemplo,
que fue similar.
Aquà pone similar,
similar.
Y podemos ver
las versiones
de JavaScript, ¿no?
Asà que fue similar
pero no fue exactamente
igual.
Asà que tuvo
como una copia
propia
de JavaScript
en su navegador
Internet Explorer.
¿Qué pasó?
Internet Explorer
se puso a barrera
a todo el mundo
del mercado
y entonces
ahà es donde
peligró realmente
el hecho
de tener
lo que conocemos
hoy en dÃa
como ECMAScript
porque, claro,
parecÃa que iba a ser
más propietario
y una versión
suya propia
con cosas muy especiales.
De hecho,
era un rollazo
porque cada navegador
tenÃa sus particularidades
del lenguaje
y tenÃas que tener cuidado
si esto iba a funcionar
en Netscape,
esto de Internet Explorer,
esto aquÃ,
en Firefox.
Bueno,
en aquel momento
era...
¿Han acordado?
Firefox, no.
Tuvo un problema.
¿Era Fire...
Firebear?
O ese era el...
A ver si alguien se acuerda.
¿Cómo era?
¿Fire?
Fire seguro.
Firefox no era al principio.
Ahora se me ha olvidado,
pero...
Firefox...
Por un tema de marcas,
Firefox se tuvo que cambiar
el nombre.
Ya no me acuerdo
si era Firebird.
Yo creo que era Firebird.
No recuerdo por qué,
pero creo que era Firebird.
Ahora lo veremos.
No me acuerdo
cuál era el nombre.
¿Alguien se acuerda
del nombre que tenÃa?
¿Era Firebird?
Eso,
Firebird,
que era pájaro de fuego.
Pero tuvo esta polémica
con la base de datos
de...
Una base de datos
que se llamaba exactamente igual
y tuvo que cambiar.
Era Firebird
porque el navegador
era Firebird
y luego el gestor de correo
era Thunderbird.
O sea,
como que cada uno
tenÃa su cosa.
Pues esto,
Jscript.
TenÃa Internet Explorer
y poca broma,
que hasta 2011,
en 2011,
fue la última versión
estable de Jscript.
De hecho,
se puede encontrar
por ahà todavÃa
código en la documentación
de Microsoft
hablando de Jscript
y una forma
de cómo desactivarlo
realmente
en algunos navegadores
de Internet Explorer.
Porque, claro,
podÃa...
Llegó un momento
que Javascript
ya tenÃa detrás
la estandarización
de Jscript
y entonces era un problema
realmente hacer convivir
los dos
y entonces tuvieron que ir
dejando de lado Jscript.
Asà que, bueno,
bastante interesante.
José Barrios dice
que hoy abrieron
la encuesta
de Stages 2020
y en la encuesta
preguntaron
si conocen de Js,
por ejemplo,
Nullish Collegesing Example.
Esto es súper interesante,
es una cosa
que es nueva
del lenguaje
que es esto
de, pues esto,
que dice
si te viene esto
y si no,
pues pon aquÃ
y ponemos
hola.
Entonces,
fo será cero
y esto es
en el caso
de que sea null
hubiera sido hola.
Vamos a poner,
por ejemplo,
var
y ponemos aquà null
y aquà ponemos
adiós
y aquà podemos ver
que ha tomado adiós.
Es una forma
más elegante
de utilizar esto
que funciona
con falsies.
Esto es una cosa
que es bastante
novedosa
en el lenguaje
de Jscript
y bueno,
ahà está
lo interesante.
Phoenix
era el anterior
a Firebird.
Cierto, Raúl,
es verdad.
Antes de llamarse
Firebird
se llamó Phoenix.
Es verdad,
cierto,
cierto,
totalmente cierto.
Ese es el primero
de todos.
y de Netscape
por ejemplo
Netscape
creo que se llamaba
antes Mosaic
puede ser.
Es que la verdad
es que de eso
hace tanto,
hace tanto.
Bueno,
otra curiosidad
de Javascript
que quizás
no sabÃas
es que
Javascript
y ojo con esto
Javascript
en realidad
es
una marca
registrada.
Javascript
que nosotros
lo utilizamos
como libremente
y tranquilamente
Javascript
es una marca
registrada
y hombre
no te quiero dar
miedo
de que te vayan
a denunciar
por utilizarlo
pero vamos a verlo
vamos a ver
la marca
registrada
y a nombre
de quien
está esta marca
registrada
vamos a verlo
y el caso
es que se creó
en el mismo
1995
del 1 de diciembre
de 1995
y este registro
lo tiene
no a ver si
aparece por algún sitio
pero ya os digo
que lo tiene
Oracle
Oracle
es quien tiene
la marca
registrada
y que la está
actualizando
asà que la marca
registrada
de Javascript
es de Oracle
Oracle
que es de
Sun Microsystems
que bueno
Sun Microsystems
ya desapareció
pero que era
la creadora
de Java
asà que Javascript
en realidad
es una marca
registrada
que la tiene
Oracle
ahora de repente
no va a ocurrir
nada
como tal
no creo
que se ponga
a denunciar
a gente
que utilice
Javascript
y es normal
registrar
marcas
pero es bastante
curioso
quién es
el que tiene
realmente
esta marca
en su poder
no sé
quién os esperaba
si os esperaba
si alguien
totalmente diferente
pensabais
que era
algo libre
no sabÃais
que era una
marca registrada
porque yo la verdad
que cuando lo descubrÃ
me quedé
bastante sorprendido
y más
teniendo en cuenta
que es
del creador
de Java
asà que luego
es normal
que la gente
piense que Javascript
tiene algo que ver
con Java
si es que
pasan estas cosas
pues no me extraña
el caso
es que como
es una marca
registrada
en realidad
que es lo que
utilizamos
hoy en dÃa
seguimos utilizando
Javascript
lo llamamos
Javascript
pero como tal
no es
Javascript
es un poco
extraño
lo que utilizamos
en realidad
es
ECMAScript
lo que pasa
es que
lo conocemos
también como
Javascript
ECMAScript
al final
es el lenguaje
que está
estandarizado
y es un lenguaje
de programación
que sirve
también como
especificación
del código
que utilizamos
de ese
Javascript
que estamos
utilizando
asà que
digamos que
son como
el conjunto
de reglas
que hace
de Javascript
lo que hoy en dÃa
es
lo que pasa
es que
como
ECMAScript
es una especificación
de un lenguaje
de programación
no está
bajo un nombre
no es una especificación
de Javascript
es una especificación
de un lenguaje
de programación
¿qué significa esto?
que puedes crear
tantos
ECMAScript
como quieras
no tiene una marca
registrada
detrás de esto
no es que
no puedas
utilizarlo
y esto es lo interesante
realmente
que lo que estamos
utilizando como tal
está basado
en esta especificación
que es la de
ECMAScript
aunque nosotros
por supuesto
le seguimos
llamando
Javascript
popularmente
y es curioso
porque la extensión
oficial
de los archivos
ECMAScript
en realidad es
.es
lo cual es bastante
curioso
luego
los de Javascript
son los que conocemos
por supuesto
y utilizamos
.js
pero aquÃ
es donde está
lo interesante
que es que
en 1997
que fue cuando
se creó
ECMAScript
por primera vez
porque
¿y de dónde viene
lo de ECMAS?
que es
European Computer
Manufacturers Association
¿vale?
asà que viene
de Europa
esto está
en una organización
europea
que es la que
se encarga
de hacer
este tipo
de especificaciones
en el mundo
de la tecnologÃa
y entonces
desde ese entonces
tanto Internet Explorer
como el resto
de navegadores
pudieron basarse
en una especificación
que es esta
que es además
la que no para
de evolucionar
aquà tenemos
la primera
que fue en 1997
y hoy en dÃa
pues sigue evolucionando
esta aquà pone
la última
que es la de enero
de 2019
pero en realidad
pues se sigue trabajando
y pronto tendremos
la siguiente
y la siguiente
con nuevas
y más novedades
fue la más interesante
seguramente
la de ECMAScript 6
la que introdujo
más cambios
de repente
porque durante mucho tiempo
estuvo muy abandonado
y esto
fue por
y vamos a por esa
esta es la curiosidad
¿qué pasó con esto?
porque si os fijáis aquÃ
si os fijáis aquÃ
tenemos la edición 1
en 1997
edición 2
un año después
edición 3
un año después
y luego aquÃ
abandonado
¿qué pasó?
¿qué pacho?
¿qué pacho?
vale
pues dirÃamos que esto
es ECMAScript 1
ECMAScript 2
ECMAScript 3
y ECMAScript 4
pues la de ECMAScript 4
podrÃa ser perfectamente
como la Terminator 4
o sea
olvidable
bastante olvidable
y es que ECMAScript 4
y lo vamos a ver
y es que de hecho
es lo siguiente
que os querÃa enseñar
fue la versión
de ECMAScript
que desapareció
¿y por qué desapareció?
porque fue una versión
muy grande
que intentaba cambiar
muchas cosas
e introducir cosas
súper interesantes
puede ser
empezó a aparecer
en 1999
y ya traÃa
cosas muy potentes
que no han tardado
una de años
en traerlo al lenguaje
que podrÃa haber acabado
en ECMAScript 4
aquà tengo un artÃculo
¿vale?
que se escribió
el 28 de mayo de 2020
pero habla de ECMAScript 4
que aquà podemos ver
que el primer draft
es de 1999
de febrero de 1999
¿vale?
pues
¿qué traÃa ECMAScript 4?
era súper ambicioso
y una de las cosas
que traÃa
eran las clases
pero si os fijáis
en la
un poco
la sintaxis
no es exactamente
la que tenemos ahora
¿vale?
no es exactamente
la sintaxis
que ahora estamos utilizando
al hacer clases
por ejemplo
estas variables
aquÃ
esto no lo soportamos
o por ejemplo
esta constante aquÃ
o una función
en mitad de una clase
¿esto cómo puede ser?
esto no es exactamente
como funciona
es bastante diferente
pero además
tenÃamos también
estáticas
finales
private
protected
public
prototype
o sea que tenÃamos
miembros de la clase
muy parecidos
a lo que podemos encontrar
en otros lenguajes
de programación
orientados a objetos
además
y esto es bastante brutal
podÃamos hacer
interfaces
interfaces
esto
las interfaces
es algo que
solo podemos hacer
hoy en dÃa
con typescript
todavÃa el lenguaje
no ha incorporado
las interfaces
pero hay más
¿qué te parece
esto?
¿qué es esto?
¿qué es esto?
son tipos
en más script 4
introducÃa
tipos
estrictos
podÃas utilizar
tipos estrictos
en tu lenguaje
de hecho
es bastante parecida
a como lo hace
typescript
y podrÃamos
ver aquÃ
una unión de tipos
por ejemplo
y también se podrÃa
utilizar asÃ
para tipar
una variable
asà que
cuando la gente
me dice
no es que
nunca va a haber
tipos en javascript
yo le dirÃa
ojo cuidado
ojo cuidado
impossible is nothing
¿vale?
y lo que sà que
estoy seguro
que si se
introducen tipos
lo que estoy seguro
es que será
retrocompatible
o sea
podrás añadir
algún tipo
de algún tipo
mejor dicho
tipos de algún tipo
pero no será
algo que rompa
tu código
o sea
podrás tener
trozos que sÃ
otros que no
pero era bastante complejo
realmente esto
era un cambio
bastante tremendo
aquà tenemos
genéricos también
era bastante
interesante
por supuesto
default types
podÃas tener default types
nuevos tipos
que se introducÃan
como el byte
un integer
unit
double
decimal
asà que tenÃamos
algunos que hasta
hace muy poco
no hemos visto
introducidos
en el lenguaje
tenÃamos los
triple quoted
strings
que al final
hemos visto algo
parecido a esto
con los template strings
que por suerte
nos quedamos con los
templates strings
que son bastante
mejores
packages
también un poco
trayendo este
los módulos
que tenemos ahora
iban a ser packages
que si os fijáis
era como más parecido
todavÃa a java
era como parecerse
todavÃa más
a java
por suerte
creo que la decisión
final fue la correcta
y no tenÃamos esto
pero ojo
ojo
que si hay algo
que traÃa
en más click 4
que tenÃa una extensión
especial
que a ver si esto suena
que es esto
que es esto
esta lÃnea de aquÃ
a que os recuerda
que es esto
esto jx
ojo
y es que tenÃa
una extensión especial
que se llamaba
e4x
vale
porque traÃa
como el estándar
de xml
para tenerlo
dentro del lenguaje
de javascript
y es bastante parecido
a lo que
hoy en dÃa
tenemos con jx
por supuesto
esto al final
no ocurrió
no ocurrió
vale
pero queda bastante claro
un poco de
por un lado
el origen de jx
que no es algo
que era tan loco
como antes
mucha gente podÃa pensar
la idea
de introducir
xml
por el hecho
de que html
en realidad
es un estándar
muy parecido
a xml
esto ya venÃa
de antes
de hecho
html llegó a intentar
implementar
xml
bastante estricto
y al final
fue un desastre
y se pasó
a html5
también por suerte
pero esta idea
llegó incluso
a funcionar
en firefox
vale
en firefox
esto se llegó
a utilizar
de hecho
estuvo
no sé si más
de una versión
y no
no recuerdo
qué versión exacta
lo quitaron
de hecho
aquà lo pone
que nunca apareció
pero
e4x
llegó a funcionar
en firefox
y lo quitaron
en firefox 10
asà que bueno
aquà podemos ver
que la idea
de jx
tampoco era tan rara
todas estas cosas
que veis
era una cosa
que iba a venir
con enmascript 4
fijaos
enmascript 4
también aquÃ
tenemos la idea
esta del text javascript
e indicar la versión
que ibas a utilizar
porque claro
enmascript 4
era tan rompedora
tan rompedora
que dijeron
tenemos que hacer algo
y como tenÃamos
esta posibilidad
de los types
lo que decÃan
era
podrÃamos indicar
qué versión
de javascript
se va a utilizar
a la hora
de importar
un script
pero
esto no puede ser
esto en la web
no puede ser
y me alegro
que esto no funcionase
me gusta más
el approach
que se está utilizando
hoy en dÃa
que es el hecho
y aunque sé que es
un reto brutal
de mantener siempre
la compatibilidad
la compatibilidad
vale
asà que bueno
esto era
enmascript 4
ahÃ
lo he cerrado
que os querÃa comentar
una cosa más
esto era enmascript 4
que como veis
pues se abandonó
definitivamente
y de diciembre
de 1999
pasamos
ojo
a diciembre
del 2009
para llegar
a enmascript 5
que era el que tenÃa
el modo estricto
el que tenÃa
algunas cosas
asà como
evitar algunas
ambigüedades
que se incluyeron
tenÃamos los getters
los setters
y por fin
en 2009
el soporte
a json
y fijaos
2009
soporte
a json
mira que
tardó lo suyo
la más famosa
pues fue en junio
de 2015
que esta sÃ
fue la que llegó
a javascript
a otro nivel
y esta fue
la que lo petó
directamente
ahora
esto
de enmascript
y ya por esa fecha
y aquà viene otra curiosidad
creo que fue en 2009
justo con enmascript 5
que apareció
Node.js
Node.js
muy bien
pues Node.js
que sabemos que es
una forma de ejecutar
javascript
en la parte del servidor
en realidad
no era
la primera vez
que se ejecutaba
javascript
en el servidor
de hecho
la idea de ejecutar
javascript
en el servidor
es bastante
antigua
bastante antigua
porque javascript
desde el principio
se pensó también
para ser un lenguaje
que se pudiera ejecutar
en el servidor
vale
no era una idea
rompedora
que llevó
Node.js
por supuesto
la popularizó
y la hizo
brutal
y lo bueno
que tuvo
fue la rapidez
con la que utilizaba
el motor de Chrome
V8
a la hora de ejecutar
javascript
porque javascript
a lo mejor
no era el lenguaje
más rápido
pero gracias a ese tipo
de optimizaciones
llegó a ser
bastante popular
en el servidor
gracias a eso
y a la potencia
que tenÃan las APIs
de Node.js
por supuesto
pero el caso
y aquà podemos ver
la documentación
de Netscape Livewire
que lo que hacÃa
es que podÃas
ejecutar javascript
en el servidor
y ya tenÃa
una idea
bastante interesante
de poder
reutilizar
código javascript
tanto en cliente
como en servidor
o sea
ya tenÃa alguna idea
bastante loca
o crear
el html
con javascript
esto en realidad
era bastante rompedor
para la época
y esto es súper antiguo
esto debe ser
de 1900
Livewire
creo que es del 96
o debe estar por ahÃ
asà que esta idea
está casi un año
o dos años
después de la creación
de javascript
entonces
la idea
de reutilizar
y utilizar
el mismo lenguaje
que tenÃamos
en el cliente
en el servidor
ya estaba
por supuesto
ya podéis imaginar
que la potencia
que tenÃa Livewire
no es exactamente
la misma
que conseguimos
más adelante
con Node.js
pero
si tenemos que hablar
un poco de influencias
influencias
que han llevado
a javascript
a donde está
gracias a esto
que hemos comentado
en 2009
Node.js
le dio ese empujón
pero claro
que pasó
que empujó
javascript
al siguiente nivel
que pasó aquÃ
para que javascript
tuviese
este empujoncito
para llegar
a este siguiente nivel
pues ya te lo comento
a ver si lo conoces
que levante la mano
quien conocÃa
CoffeeScript
ahora mismo
¿dónde estáis?
levantad la mano
que os vea yo
no seáis tÃmidos
no pasa nada
a mà me encantaba
CoffeeScript
quien no sepa
qué es CoffeeScript
no pasa nada tampoco
yo se lo explico
vale
CoffeeScript
era un lenguaje
que compilaba
a javascript
hoy en dÃa
esto parece
una chorrada
como un templo
¿sabes?
ahora mismo
alguien dirÃa
un lenguaje
que compila
a javascript
o sea
eso es muy visto
por ejemplo
typescript
es un lenguaje
que ofrece
cierta funcionalidad
y que compila
a javascript
también tendrÃamos
Babel
Babel
es javascript
que compila
a javascript
entonces
en aquella época
o sea
hoy en dÃa
verÃamos que esto
es muy normal
pero en aquella época
esta idea
fue súper rompedora
CoffeeScript
abrió
la puerta
a otro tipo
de nivel
en javascript
esta es la versión 2
pero en la versión 1
ya tenÃa un montón
de funcionalidades
que intentaba mejorar
y simplificar
cómo escribir javascript
de hecho la sintaxis
que podemos ver aquÃ
una de las cosas
que tenÃa CoffeeScript
que lo hacÃa muy famoso
era el hecho de
quitar totalmente
las llaves
bueno
las podÃas llegar a utilizar
en algún contexto
pero casi no habÃa
ningún tipo de llaves
aquà tendrÃamos
la parte de CoffeeScript
aquà a la izquierda
y a la derecha
cómo transpilarÃa
en javascript
la idea era
escribir menos código
y cosas que podÃamos ver
la tenemos aquÃ
¿qué es esto?
esto es una función
esto es lo que decÃamos
una arrow function
y en CoffeeScript
tenÃamos dos arrow functions
la arrow function
esta tÃpica
y también tenÃamos
la fat arrow function
tenÃamos
a ver si sale por aquÃ
fat arrow
vale
bound fat arrow functions
vale
aquà lo tenÃamos
la fat arrow functions
serÃa con un igual
que es como lo tenemos
en javascript
y aquà la normal
la tendrÃamos con uno
al final la diferencia
la diferencia
en el caso de CoffeeScript
se encuentra
en que aquà se hace
un bin
del contexto directamente
o sea el contexto
de this
en este caso
funcionarÃa
de una forma más similar
a javascript
aunque aquà sà que se hace
un bindeo
obligatorio
en javascript
no se hace un bin
sino lo que pasa
es que no tiene
ningún tipo de contexto
pero
¿qué pasa?
que esto se popularizó
un montón
con CoffeeScript
este tipo de sintaxis
hay un montón
de sintaxis
que pudimos ver
que de alguna forma
popularizó CoffeeScript
y luego se llevó
a javascript
por ejemplo
el de structuring
vale
aquà tenemos
el de structuring
vale
esto llegó antes
a CoffeeScript
antes que a javascript
asà que tenÃamos
un montón de operandos
como ejemplo
el operator este
de existencia
tenÃa cosas
muy muy muy interesantes
CoffeeScript
lo que hizo
fue empujar un poquito
el lÃmite
en el que se movÃa
javascript
y abrir
las posibilidades
del lenguaje
y ver que se podÃa
transpilar el código
era una idea
que era un poquito
loca en ese momento
hubo grandes proyectos
que se llegaron a hacer
con CoffeeScript
de hecho
Atom
el editor de github
se hizo con CoffeeScript
el problema
que claro
CoffeeScript
al final se quedó
un poco
no deprecated
pero sà que se quedó
atrás en el lenguaje
porque javascript
empezó a incorporar
muchas de las cosas
que veÃa interesante
y ya casi no se necesitaba
tanto CoffeeScript
una cosa que a mÃ
siempre me gusta mucho
de CoffeeScript
es que la igualdad
esta igualdad
aquà que tenemos
en javascript
esto por defecto
en CoffeeScript
los dos iguales
ya era la igualdad
estricta
o sea no existÃa
la igualdad regular
no la podÃas utilizar
asà que bueno
esta era una
de las cosas interesantes
que llevó a javascript
al siguiente nivel
el tema de las
Arrows Functions
no es que lo inventase
CoffeeScript
es una cosa
que se utiliza mucho
en la programación funcional
el referirse a las funciones
asà con una Arrows Function
de hecho Haskell
creo que lo utiliza mucho
y seguramente
ese es el origen
real
de las Arrows Functions
pero la popularidad
dentro del ecosistema
de javascript
seguro
que vino por
CoffeeScript
asà que bueno
no sé si lo conocÃais
si no lo conocÃais
y tal
pero bueno
ahà está
CoffeeScript
una de las cosas
y aquà viene otra curiosidad
de javascript
que se han quedado
en el lenguaje
porque bueno
porque el lenguaje
pues va un poco
evolucionando y tal
pero se queda
se queda ahÃ
a ver que dice
dice VÃctor Vejas
cuando dices que
ts compila javascript
serÃa que ts por debajo
es javascript
cuando digo que ts compila javascript
es que si tú haces un proyecto
con typescript
vale
tú haces un proyecto
con typescript
te pones ahÃ
bam
hace ese proyecto
una vez que lo llevas
al navegador
no es typescript
es javascript
porque typescript
ya lo habrá compilado
a javascript
o sea
los estáticos
que tiene de output
es javascript
porque typescript
no lo entiende el navegador
al final
muchas de estas cosas
lo que hace
lo podemos llamar
transpilación
lo podemos llamar compilación
porque al final
no deja de ser compilación
pero mucha gente
habla de transpilación
pero al final
lo importante es que
lo que entiende el navegador
es javascript
en el caso de Babel
tú escribes javascript
pero es javascript del futuro
y lo transpilas
compilas
transformas
a javascript
que entiende el navegador
y coffee script
pues era exactamente esto
tú escribÃas coffee script
ejecutabas un comando
y pues te salÃa javascript
lo que hace sas con css
¿no?
escribes sas
pero al final
lo que sale es css
es lo que hay
dice lucas
¿puede ser que javascript
incorpore todo
typescript
como pasó
como pasó con coffee script?
a ver
yo creo que
javascript
no incorporó
todo coffee script
de hecho
quedaron muchas cosas fuera
yo creo que
buenas decisiones
de que quedasen fuera
porque hay cosas que no
a lo mejor
no tenÃan tanto sentido
como por ejemplo
no poner
cuando son variables
eso te lo podÃa saltar
o por ejemplo
tenÃa palabras clave
como
tenÃa clases
tenÃa clases
es verdad
coffee script
tenÃa clases
cuando todavÃa no existÃan
en javascript
que por detrás
pues eran prototipos
y tal
tenÃa el rest
y el spread operator
eso sà que ha llegado
pero hay cosas como
el utilizar el unless
o el
o
tenÃa como algunos
algunas palabras clave
que te hacÃa más verboso
el código
y eso no ha llegado
hay muchas cosas
que no han llegado
de coffee script
y no creo que
que si llegan cosas
de typescript
tampoco creo que sean
que sean todas
la verdad
vale
excelente
entendido
perfecto
vÃctor
vale
pues vamos a por la siguiente curiosidad
si os parece
ok
y esta va a ser bastante loca
no sé si funcionará aquÃ
lo vamos a probar
el caso es que
en javascript
puedes escribir comentarios asÃ
¿no?
esto es un comentario
sÃ
esto funciona bien
¿vale?
esto serÃa un comentario
puedes hacer un comentario
de bloque ¿no?
y poner aquÃ
bueno
a ver
y esto
pues tú sigues escribiendo
y haces asÃ
¿vale?
estos son comentarios de bloque
pero hay otro tipo de comentario
que quizás no utilizas
en tu dÃa a dÃa
y no me extraña
que también soporta
javascript
y a lo mejor
no sabes cuál es
a lo mejor
si te digo
que es este
¿te suena de algo
este comentario?
esto es un comentario
de html
en javascript
y esto funciona perfectamente
los comentarios html
los puedes utilizar
en javascript
y no pasa nada
funciona sin ningún tipo
de problema
y de hecho
bueno
sin ningún tipo de problema
perdón
perdón
voy a hacer
sin ningún tipo de problema
lo puede interpretar javascript
pero sà que hay un problema
¿vale?
y por lo tanto
os voy a decir
¿por qué no lo tenéis que utilizar nunca?
el problema
de los códigos html
el código
el comentario
es que javascript
se lo come con patatas
pero no se lleva muy bien
con ciertos transpiladores
o minificadores
por ejemplo
no sé si Babel
tiene algún problema con esto
pero hay minificadores
que no entienden
esta sintaxis
porque dan por hecho
que esto está
fuera de todo uso
¿vale?
pero funcionar funciona
los comentarios de html
funcionan perfectamente
en javascript
de hecho
esto era interesante
porque
no sé
pero hace mil millones de años
cuando todavÃa se ponÃa el type
que por cierto
no hace falta que pongáis el type
nunca más
¿vale?
aquà se hacÃa este comentario
súper chungo
¿no?
para evitar
que los navegadores
que no soportaban
javascript
ejecutasen este código
¿no?
¿y por qué se ponÃa el comentario
del html?
porque si no tenÃas javascript
lo que iba a hacer
este comentario html
era evitar
que se ejecutase
el código de dentro
que iba a intentar
ejecutarlo
y iba a dar un error
entonces
utilizabas el código
del html
porque
si no tenÃas javascript
pues básicamente
lo que hacÃa eso
lo entendÃa como html
pero si tenÃas javascript
javascript
sà que entendÃa
ese comentario
y ejecutaba
igualmente
tu código javascript
era bastante interesante
bastante raro
innecesario
hoy en dÃa
¿vale?
innecesario
esto no hace falta
que lo hagáis
si esta lo he ligado
que he hecho aquÃ
asÃ
al fin
ahÃ
sÃ
pues eso
pero ya no hace falta
que hagáis esto
nunca más
de hecho no hace falta
ni que pongáis el type
que el type ya por defecto
siempre es text
barra javascript
ni hace falta
que pongáis esto
porque a las malas
si no tiene javascript
pues no lo ejecutará
y ya está
lo que en todo caso
podéis utilizar el no script
para poner ciertas cosas
que queréis que aparezcan
en la página
como por ejemplo
podéis decir
que si no tiene javascript
que no lo tiene activado
pues necesitas javascript
para que funcione
la página
¿vale?
pues esto lo puedes hacer
esto no es html
esto no funciona en javascript
esto es para que lo veáis
con el html
lo que podéis hacer
¿vale?
pero los comentarios html
son válidos
en javascript
pero no los uséis
no los uséis
¿vale?
otra cosa que
muy poca gente
sabe que existe
otra curiosidad
es un operador
un poquito de especial
que
se usa más
de lo que
la gente cree
pero no lo usáis
vosotros
¿vale?
¿por qué?
¿de dónde aparece
este operador?
el operador que os voy a hablar
es void
pon
void
y funciona perfectamente
es un operador
que lo que hace es
evaluar
lo que vas a poner
a la derecha
pero
pase lo que pase
en la derecha
devuelva lo que devuelva
él lo que va a devolver
siempre es
undefined
por ejemplo
si yo pongo void 2
pues undefined
si yo pongo void
console.log
hola
pues me va a decir
bueno
me va a salir el hola
porque evalúa
el console.log
lo evalúa
pero lo que va a devolver
al final
es undefined
o sea
haga lo que haga
pues void 0
void 0 undefined
void true
undefined
siempre
undefined
y esto que os digo
que se usa más
de lo que creéis
es porque
bueno
nosotros
en nuestro dÃa a dÃa
no lo usamos
pero los minificadores
de código
podéis ver
que hay algún tipo
de minificación
que es un poquito
más corto
utilizar el void
para asegurarse
que devuelve undefined
que no hacer
el undefined
manualmente
es bastante raro
son de este tipo
de optimizaciones
que jamás tenéis que hacer
vosotros a mano
pero aquà lo tenemos
el void
pero si hay uno
hay una cosa
que me gusta mucho
y es la siguiente curiosidad
de javascript
que
si no la conocÃas
dedito para arriba
te suscribes
le dais like
y lo compartes
porque esta de verdad
si no te sorprende esta
bueno
vale
vamos a ella
vamos a hacer esto más grande
que esta
esta se la merece
vamos a ver
bueno
pero no tan grande
que me quedo encima
vale
vale
aquà tenemos la consola
vamos a crear un objeto
que le vamos a llamar
midudev
mira si es que de hecho
si ya tengo aquà uno
porque siempre utilizo
el del objeto
midudev
bueno da igual
twitter
que le ponemos al midudev
y le ponemos también
el canal
al que te tienes que suscribir
si no estás suscrito ya
porque te enseña cosas
tan interesantes
y seguramente
súper poco útiles
como esta
vale
ya tenemos nuestra constante
midudev
vale
tenemos un objeto
que tiene una propiedad name
con miguel
twitter
midudev
bla bla
bueno
perfecto
hay uno operando
vale
que quizás no sabes
que existe
que lo que te hace
es recuperar
todas las propiedades
de este objeto
y te las introduce
en un bloque
con un scope
concreto
sin que tengas que declarar
las variables
aunque ya os
os voy a hacer un spoiler
no os lo recomiendo
no os lo recomiendo
y luego os explicaré por qué
pero
esto existe en javascript
poca gente lo sabe
y es bastante chulo
asà que
ahora que tenemos este objeto
como podemos
utilizar estas propiedades
fácilmente
pues utilizando
width
el operador width
le decimos que tenemos
este objeto
midudev
y dentro
con estas llaves
en este scope
lo que va a hacer es
introducir como variables
las propiedades
que tenemos dentro del objeto
por ejemplo
vamos a poner aquÃ
un console.log
y vamos a decir
hola
soy
bueno voy a poner aquÃ
un template
hola
soy
name
sÃgueme
en
twitter
o en
en el canal
vale
y si
lo he hecho todo bien
y no le ha liado parda
vale
name es la propiedad
que tenemos aquÃ
twitter es la propiedad
que tenemos aquÃ
y canal es la propiedad
que tenemos aquÃ
pues si le damos a enter
aquà lo tenemos
ha funcionado perfectamente
esto es mágico
esto
esto es maravilloso
a ver es maravilloso
pero no lo hagáis
en vuestras casas
vale
esto seguramente
hay en
si conocéis
action script
creo que esto
sà que está disponible
y se utilizaba
y poca gente sabe
que también está
en javascript
pero lo cierto
es que está
deprecated
eso por un lado
lo segundo
es que
uno nunca sabe
cuando esto lo pueden quitar
del lenguaje
lo segundo
es que esto tiene
problemas de seguridad
que es por la que
está deprecadÃsimo
y tiene problemas
de rendimiento
porque crea variables
que no sabe
si la va a necesitar
no sé
creo que tiene problemas
también con el garbage collector
entonces hay bastantes problemas
pero para quedarte con la gente
y decirle
mira mira
que no sabÃas que esto
lo puede hacer javascript
que esto es una cosa
que realmente funciona
en el lenguaje
pues es bastante interesante
porque parece magia
el hecho de que este name
lo extrae de forma automática
en una variable
disponible dentro de este scope
vale
si ya ponemos aquà name
pues esto ya nada
bueno
porque vete a saber
que será eso
pero esto ya no existe
vale
es solo dentro del scope
de este bloque
que hemos utilizado
con el quiz
asà que bueno
interesante
otra curiosidad
que se ha quedado ahÃ
en el lenguaje
vete a saber por qué
es la posibilidad
de poder utilizar
de poder crear funciones
con el new function
y le podemos decir
primero
cuáles son los parámetros
que tenemos
espera
si ya tengo ahÃ
todo escrito
los parámetros
y finalmente
le tenemos que decir
pues el cuerpo
que serÃa de la función
pues le decimos
num1 con num2
vale
y esto nos va a crear
una función
aquà tendrÃamos
todos los parámetros
que vamos a necesitar
podrÃamos ser
pues aquà hemos puesto dos
pero pueden ser
todos los que queramos
y finalmente el string
que serÃa el cuerpo
de la función
y con esto
podrÃamos crear
nuestra propia función
asà que ahora
podrÃamos utilizar
el sum1
con el 3
y esto
pues nos da 4
esto del new function
por supuesto
tampoco construyáis
funciones asÃ
pero es interesante
que el new function
es algo que se utiliza
para crear funciones
realmente internamente
que es algo que
esto no está deprecado
ni mucho menos
pero sà que está
bastante poco recomendable
que creéis vuestras funciones
asÃ
pero si hablamos de funciones
y vamos a poner
la siguiente curiosidad
que a mà me gusta mucho
es la
claro
javascript
como todo es un objeto
javascript
todo
todo es un objeto
y a mà me gustan mucho
los retos de javascript
de hackear el lenguaje
de cómo no se supone
que lo tienes que utilizar
pero utilizarlo igualmente asÃ
para ver qué cosas
puedes hacer
por ejemplo
una de ellas
serÃa el hecho
de un reto
de decir
sin crear ninguna variable
ninguna variable
y sólo puedes crear
una función
tener un contador
que te diga
cuántas veces
se llama esa función
¿se os ocurre?
¿cómo lo podrÃais hacer?
a ver
ir pensando
ir pensando
sin crear variables
sin crear ninguna variable
no sé por qué crear una variable
sólo se puede crear
una función
sólo se puede crear una función
y cada vez que ejecutas
esa función
te tiene que decir
cuántas veces se ha ejecutado
asà que tiene que tener
algún tipo de estado
¿vale?
a ver si
a ver si se ocurre algo
mientras
mientras os voy leyendo por aquÃ
sÃ
esta maximiliano
es la
la mÃtica
¿eh?
del tipo
del
big int
que le pasa
también el 0,1
más 0,2
y sale el 0,
bla bla bla
no he hablado del eval
es que el eval
está tan visto ya
que
pues
no lo quiero comentar
pero bueno
está también interesante
el poder evaluar strings
esto que hemos creado
la función
es bastante parecido
muy buena
dice
Josef
hola
hola
el Lucas Moy
dice mira
el width lo usaba
en action script
y es verdad
es lo que os comentaba
si utilizáis action script
pues tal cual
vale vale
pues venga
os voy a
vamos a hacer esto
venga
vamos a hacerlo
el tema
con una closure
quizás
claro que una closure
lo podrÃas hacer
pero necesitarÃas crear la variable
sin closures
sin closures
es bastante tricky
o sea
lo cierto es que es un poco trampa
y todo
vale
pero vamos a ver
vamos a llamarle una función
cuantas veces
bueno
times
times
times
mira
sobreescribiendo el value of
con prototipos
se puede hacer con prototipos
sÃ
sobreescribiendo el value of
también
bueno
sÃ
a ver
se puede hacer en muchas formas
y veo que hay buenas ideas aquÃ
sà sà sÃ
una forma muy pirata
y el hecho de
aprovechando que en javascript
todo es una función
bueno
todo es una función
no
todo es un objeto
hay en algunas cosas que
times call
console count
bueno
a ver
sÃ
lo que pasa es que no podrÃas utilizar
ese valor
realmente
o sea
podrÃas contarlo
y lo podrÃa hacer
pero no podrÃas
utilizarlo para algo
por ejemplo
aquà podrÃamos decir
vale
times call
y aquà tenemos que devolver
el counter
las veces que se ha llamado
esta función
vamos a ver
una cosa que podemos hacer aquÃ
es utilizar la propia función
para decirle
y ponerle aquà un counter
y le decimos
vale
times call
el counter
si el counter existe
que no
o sea
que si es truci
por lo que vamos a hacer
vamos a fiarnos
de que
call counter
le sumamos uno
y ya
incrementamos el valor
del contador
y si no
pues directamente
lo que hacemos es que
times call
times call
counter
esta propiedad
lo que hacemos
es volver
le asignamos uno
o sea
será la primera vez
que asignamos
de forma que la primera vez
que lo llamamos
sea uno
las siguientes veces
pues será dos
porque ya existirá
entonces lo incrementará
entonces lo que hacemos
es devolver
este times call
counter
entonces
lo que vamos a hacer
ahora
serÃa
pues count
bueno
vamos a poner aquÃ
un count
times call
aquà lo llamamos
una vez
vamos a ver
que hay un count
uno
vale
entonces si yo ahora
llamo aquÃ
otra vez
bueno claro
es que además lo devuelve
como aquà se sabe
lo que devuelve
pues aquà podéis ver
el tres
el no sé qué
o sea que vamos viendo
y luego el count
ahora si lo vuelvo a llamar
y lo guardo en el count
pues tenemos ahà el cuatro
y en el count
tenemos el cuatro
asà que
con esto
tendrÃamos un estado interno
en una función
de una forma muy pirata
y que es totalmente
desaconsejada
seguramente
como ha dicho
Jonathan de Beck
con una closure
serÃa bastante mejor opción
vale
pero es bastante interesante
el hecho de que
puedes utilizar el nombre
de la propia función
y añadirle una propiedad
y guardar ahÃ
como un estado
de por ejemplo
cuántas veces
se ha llamado
esa función
y podrÃas utilizarlo
en cualquier forma
de hecho
lo bueno
que tendrÃamos aquÃ
no solo es que
lo estamos devolviendo aquÃ
es que si ponemos
el timescowl.counter
lo tenemos disponible
fuera de la función
si por algún motivo
que no se me ocurre
puedes
o quieres saber
cuántas veces
se llama una función
o quieres recuperar
algo que sea interno
de esa función
que se va actualizando
lo podrÃas hacer asÃ
sin crear ninguna variable
sin hacer nada
eso es lo que tiene
que todo
sea un
un objeto
en JavaScript
es una maravilla
de la misma forma
que hemos hecho esto
por ejemplo
say hi
esto también podrÃa servir
para configurar
una función
¿vale?
vamos a hacer este
say hi
vamos a hacerlo
tiene que ser asÃ
function
say hi
y pongamos
que según
si el say hi
punto lang
es español
pues decimos
hola mundo
y si
el
say hi
punto lang
es
en
pues
hello world
claro
claro
una cosa asÃ
también
serÃa interesante
porque
y si no
tenemos
pa pa pa
y
si no
pues
hacemos
vamos a poner aquÃ
return
para salir
return
y aquÃ
console.log
not lang
configured
esto es bastante pirata
¿eh?
vale
entonces
ahora si digo
un say hi
no tenemos
un lenguaje
configurado
si ahora le decimos
toma
aquà lo tienes
en castellano
y llamamos al say hi
pues ahora lo tenemos
en castellano
si ahora decimos
say hi
punto lang
y lo ponemos en inglés
y esa función
no hagáis esto
en vuestras casas
utilizad
parámetros
¿vale?
no utilicéis esto
y no me nombréis a mÃ
esto no lo habéis visto aquÃ
esto ha sido
solo por curiosidad
¿vale?
hay más
madre mÃa
si quedan más
quedan más
¿queréis que sigamos?
o lo harÃa
ya dejamos
lo dejamos aquÃ
o seguimos
si queréis seguimos
hay más
hay unos cuantos más
me quedan unos cuantos más
porque son 25 en total
y luego pasamos otros temas
¿eh?
si queréis más
pues nada
dadle like
y entonces hacemos más
si llegamos a 200
hacemos 100 más
si llegamos a 200 likes
hacemos 200 más
venga
vamos a por otro
que me parece
súper interesante
y este que os voy a comentar
y otra curiosidad
de javascript
no es tan
o sea
es interesante
por lo que se puede hacer
pero es más interesante
por lo que no se puede hacer
por culpa de esto
y ahora lo vais a entender
entonces
una sentencia
una sentencia
en javascript
cuando hablamos de sentencias
estamos hablando
por ejemplo
de este
while x
menor a 10
¿no?
pues aquà tenemos una sentencia
y encima
tiene el bloque
donde se ejecuta
el código
que tiene el scope
de esta sentencia
¿no?
lo mismo con el if
el while en este caso
x más más
vale
pues esto hará
un while
pero no lo voy a dar
por si acaso
pero esto es lo que harÃa
tendrÃa que poner el var x y tal
lo que harÃa
pues esa sentencia
se ejecutarÃa
lo mismo con el if
lo mismo con tal
vale
perfecto
entonces
este tipo de sentencias
que están en bloque
en realidad
no hace falta
utilizar while
o if
¿lo sabÃas?
o sea
yo puedo ejecutar aquÃ
lo que me dé la gana
yo puedo decir
var x igual a 1
vale
toma bloque
ala
anda
esto que es un objeto
no
es lo que me da la gana
y a mà lo que me da la gana
aquà es decir
que el var x
es igual a 1
ya está
o sea
que aquà ponemos
un console.log
y ¿qué ha pasado aqu�
vale
en este caso
no ha tenido mucho sentido
vamos a poner el var a 2
vale
esto
que está pasando aquÃ
es que estamos creando
un bloque
con las llaves
y esto funciona perfectamente
y podemos escribir código
dentro de ese bloque
en este caso
que estamos utilizando var
que no utilicéis más los bares
ni vayáis a bares
que estamos de toque de queda y tal
pero
el var
lo que pasa es que tú puedes ir añadiendo var
y entonces se va a volver a reescribir
y cuando te refieres a la x
pues el scope
bla bla bla
los var son la leche
vamos a ver los leds
porque los leds
sà que tienen
su scope
está limitado
dentro de las llaves
o sea
si yo hago led
y asÃ
¿vale?
y ponemos aquÃ
voy a quitar esto
¿veis bien no?
sÃ
vale
y ponemos aquÃ
que el led
y es igual a 2
y hago un console.log
ahora vas a ver
y es que
en este caso
se queda en 1
porque el scope
que está esta variable
no está en el scope superior
¿vale?
con las variables
las variables
se saltan los scopes
los scopes
que crean estas sentencias
se las saltan
es como los if
o sea
tú pones una variable
dentro del if
y se la salta
en este caso
con el led
sà que respeta
el scope
asà que
este led
que estamos haciendo aquÃ
no es el valor
que vamos a ver
en este console.log
asà que es 1
lo mismo pasarÃa
por ejemplo
pues tenemos esto
y lo hacemos asÃ
y decimos
pues venga
vamos a poner esto
pam
console.log
pam
ahora sÃ
¿por qué?
porque lo que estamos haciendo
es referirnos
dentro de esta y
en este scope
de esta sentencia
nos referimos al de fuera
asà que lo hemos actualizado
al 2
vale
perfecto
esto
el poder ir creando
estos bloques
estas sentencias
y definir bloques
es interesante
pero tampoco es que sea
muy interesante
o sea
yo no lo usarÃa jamás
pero esto
esta funcionalidad
es la que
nos está reventando
una funcionalidad
que será muy interesante
en javascript
y como tenemos que mantener
la compatibilidad
no nos deja hacerla
y es que
fÃjate
nos gustarÃa
por ejemplo
tener aquÃ
un objeto
asÃ
tener aquÃ
una variable
que le vamos a llamar
pepito
y más adelante
poder hacer
la desestructuración
de ese objeto
y que vaya
a pepito
o desestructurar
directamente
y que vaya
a pepito
o sea
quiero guardar
en pepito
esta A
o sea
me gustarÃa
poder guardarla
ahà directamente
siempre estamos
obligados
a que
haga
añadir este LED
aquÃ
vale
no sé si se ve bien
vale
siempre tienes que añadir
el const
LED
no sé qué
no sé cuántos
tienes que hacerlo
o sea
hay que hacerlo
por ahÃ
porque si no
¿por qué?
porque es que al final
este tipo
de sintaxis
en realidad
que se cree
cuando la ve asÃ
JavaScript
se cree que estás
intentando utilizar esta
y entonces
para evitar esa colisión
la que tienes que hacer
es utilizar
la constante
un LED
o lo que sea
para extraer
ese tipo de variables
o sea que
esto en realidad
que no se puede hacer
tan fácilmente
es un problema
que a veces
tiene JavaScript
que tiene que acordarse
de lo que está soportando
ya
para no romper nada
y es un locurón
vale
vamos a por el siguiente
¿vale?
el siguiente
es el de las funciones
y es que las funciones
y a mà es una de las cosas
que me gusta mucho
de hecho
voy a recuperar
la función esta
del say high
este mismo
say high
no sé qué
esta
¿vale?
una cosa muy interesante
de las funciones
que hemos dicho
que es un objeto
pero al ser un objeto
también tiene propiedades
que ya vienen
de gratis
hay propiedades
que tiene ese objeto
que vienen
de gratis
que no sabÃamos
que tenÃamos
por ejemplo
el nombre de la función
¿vale?
el nombre de la función
lo podemos recuperar
si nosotros
este say high
le decimos
bueno
quiero saber
cuál es el nombre
que tenÃa esta función
pues podemos llamarlo
utilizando el punto name
ahora
claro
esto dices
bueno
pero es que
si ya te refiero
a say high
punto name
o sea
es exactamente lo mismo
pero lo interesante
no está aquÃ
lo interesante
está con las variables
también
cuando lo que hacemos
es generar una función
y guardarlo
en una variable
como por ejemplo
pues aquÃ
hola mundo
y aquà le ponemos
este
concept log
hola mundo
y ahora vais a enterar
por qué esto es súper útil
¿vale?
y esto lo tengo
en esta variable
que es hola mundo
y ponemos
hola mundo punto name
resulta
que el nombre
que me ha devuelto
es justamente
el nombre
de la variable
o sea
ya sabe
que la función
tiene este nombre
y ahora me dirás
bueno
pero menuda chorrada
y esto
¿qué utilidad puede tener?
pues en realidad
esta utilidad
puede ser más
de la que parece
porque hay ciertas aplicaciones
o ciertas librerÃas
que pueden hacer uso de esto
por ejemplo
la react developer tools
porque cuando se crea
una función
o un componente
en este caso
y le ponemos un nombre
al componente
pero no le ponemos
display name
¿cómo recupera
realmente?
¿cómo sabe
que se llama asÃ?
¿cómo sabe
que ese componente
cuando vamos a la react developer tools
si no tiene un display name
¿cómo va a averiguar
que el nombre
del componente
es ese?
vamos aquà a components
y aquà tenemos
un montón de nombres
y tal
pues esto lo hace
si no tienes el display name
recupera el nombre
de la función
y el nombre de la función
que es el nombre
del componente
es el que aparece aquÃ
por eso hay veces
que puedes encontrarte
este tipo de
nombre de componente
porque esto seguro
es un componente
que ha sido minificado
el nombre de la función
ha sido cambiado
no tenÃa display name
y al ser minificado
el nombre de la función
pues cuando ha hecho
el function.name
se ha encontrado
con el ie
ie, ie, o
asà que esa serÃa
la curiosidad
de las funciones
que aunque parece ser
que no tiene ninguna utilidad
en realidad
tiene más utilidad
de la que parece
vamos a leer
vuestros comentarios
y
luego seguimos
que quedan ya
poquitos
ya quedan pocos
ya quedan pocos
quedan nada
4 o 5
el siguiente me encanta
y espero que guste
tanto a vosotros
el siguiente es
sobre
cómo evoluciona
javascript
cuáles son los siguientes
tipos primitivos
que lo van a petar
y de esto haré un vÃdeo
en mi canal
también
exclusivo sobre esto
hablando más en profundidad
porque me encantan
y espero que os gusten
y si también tenéis
vosotros
algún tipo
de funcionalidad
que estás esperando
con muchas ganas
de javascript
coméntalo
en el chat
¿vale?
y lo leemos
Daniel Nieto dice
¿se podrÃa usar el nombre
como string
para llamar a la función
de alguna manera?
sÃ
se podrÃa
claro
con el
a ver si hemos dejado
aquà el say high
say high
he puesto aquÃ
say high
no
vale
function
say high
lo que pasa es que
estas cosas
no las hagas
o sea
estas cosas
no las hagas
sÃ
o sea
podrÃamos
guardar
por ejemplo
podrÃamos guardar
esto en una
no sé si esto
funcionará
el name
ponemos say high
punto name
por guardarlo ahÃ
ponemos aquÃ
esto
vamos a poner
una evaluación
no sé si no para dejar esto
del nombre
y lo ejecutamos asÃ
ya está
un eval
estamos evaluando
el nombre
de la función
y la ejecutamos
y ya está
y ya lo tendrÃamos
no land configure
o sea ejecutar
se ha ejecutado
con el eval
se pueden hacer
mil millones de cosas
cosas que no deberÃamos hacer
¿vale?
¿qué más?
mirdef
en un arreglo de funciones
cuando desees el nombre
de dicha función
ya que la variable
puede almacenar cualquiera
en un arreglo de funciones
cuando desees el nombre
de dicha función
ya que la variable
puede almacenar cualquiera
en un arreglo de funciones
pero en un arreglo de funciones
al final
o sea pues
va a ser el elemento
de esa función
o sea al final
cuando tienes la función
tienes el nombre
¿vale?
ay perdón
que no se veÃa la pantalla
perdón perdón
lo hacemos otra vez
perdón
sÃ
lo siento
es que estaba ahÃ
vale
vamos a
rápidamente
el say high
¿vale?
tenemos la función del say high
vale
perfecto
vamos a guardar
method to execute
en una constante
perdón
perdón
perdón
es que he perdido
el foco aquÃ
de mi pantallita
vale
el método para ejecutar
sea say high
punto name
¿vale?
que esto nos devuelve
el nombre de la función
exactamente
pues podrÃamos hacer un eval
que no deberÃamos hacerlo
ya os digo yo
decimos cuál es el método
a ejecutar
y aquà lo ejecutamos
y esto
esto aquÃ
lo cerramos aquÃ
esto lo ponemos aquÃ
y pam
no hagáis esto en vuestras casas
¿vale?
y a mà no me mencionéis
si hacéis esto
y no
yo no quiero saber nada
¿vale?
pero bueno
que poder se puede hacer
y aquà ha funcionado
que al final
esto
es que con eval
lo que no se puede hacer con eval
o sea
tal cual
ojo
Luis
¿qué tal?
mi dev
la próxima semana
comienzo como desarrollador
en la empresa española
Everest
muy bien
bravo Luis
me alegro un montón
me alegro un montón
Daniel Nieto
pensaba que serÃa más bonito
no
no
no iba a ser bonito
no iba a ser bonito
demasiado que no
nos han llamado la policÃa
a la puerta
¿recomiendas especificar
siempre el display name
en los componentes React
para poder divulgar
por ejemplo en producción
y ver bien los nombres
en ese caso?
sÃ
Jonathan
totalmente
siempre recomiendo
que utilices
el display name
porque justamente
lo que comentas
¿no?
hay más
razones
por las que utilizar
el display name
como por ejemplo
que no sé
cuando tienes
higher the components
que se pueda perder
el display name
bueno
pero sobre todo por eso
y creo que gratis
¿no?
que tampoco cuesta tanto
un truco que se puede hacer
es utilizar
el punto name
como display name
bueno
pero tampoco me mencionáis
a mà cuando utilicéis
esas cosas
¿vale?
que bueno
vale
al acceder
hola
¿me podrÃas ayudar?
tengo una duda
al acceder un inframe
incrustado
con un origen distinto
¿cómo puedo hacer
para referenciar un elemento
de ese frame?
buah chaval
no te quieras meter
con los iframes
con un origen distinto
para referenciar
un elemento
de este iframe
es que lo único
que me ocurre
es que puedas
hacer post message
y tal
porque cuando son
orÃgenes distintos
pues eso
también puedes hacer
tal variable
sÃ
claro
también
podrÃamos hacer eso
pero
Daniel
ya nos ha contestado
también eso
pensaba que serÃa
más bonito
vale
vale
pues os explico
os explico
cuál es la próxima
funcionalidad
porque hemos hablado
de javascript
hemos hablado
de su pasado
hemos hablado
de su pasado turbio
hemos hablado
de cosas que se han quedado
en el lenguaje
de digamos
cosas raras
que se han quedado
en el lenguaje
hemos hablado también
pues nada
curiosidades y tal
entonces
me gustarÃa compartir
con vosotros
más que una curiosidad
una anécdota y tal
algo súper
pues
experienciador
o ver que realmente
está
está evolucionando el lenguaje
y es que esto no para
es que esto no para
o sea que os tenéis que
os tenéis que suscribir
al canal
os tenéis que
me voy a poner serio
suscrÃbete al canal
dale like
o sea machaca el botón de like
suscrÃbete a este canal
porque asà hago más vÃdeos
cuanto más sea
y más vÃdeos hago
y asà más cosas aprendéis
de javascript
o sea
no os podéis perder
estas cosas
y lo que no os podéis perder
son los dos nuevos tipos
primitivos
que llegan a javascript
que son los records
y las tuplas
ya he hablado de ellas
en instagram
que está aquà mi
mi cuenta de instagram
por si no estás
que ya he hablado de records
y tuples
vale
básicamente
que son los records
y que son las tuplas
para decirlo bonito
uno de los problemas
que ha habido en javascript
históricamente
ha sido
que los objetos
y los arrays
cuando intentas hacer
algún tipo de igualdad
entre ellas
o sea
si yo digo
uno dos y tres
vale
y digo
es igual a uno dos y tres
pues claro
que va a pasar con esto
no sé si esto
me lo va a añadir ahÃ
directamente
no tengo ni idea
parece que no
tengo que poner un log
vale
pues pongo un log
venga
pongo un log
venga
esto es false
claro
aquà la gente empieza ya
a volverse loca
pero que dices
pero que le pasa a esto
pero javascript
está roto
entonces
y tienen toda razón
que pasa
que los arrays
y los objetos
esto pasa lo mismo
con un objeto
o sea
estos false
con un objeto
también
lo sabe dios
de hecho
puede estar vacÃo
el objeto
que no importa
que me va a decir
que me puedo acostar
vale
entonces
esto es un array
esto es un objeto
y ya veis que
aunque son los mismos
los tipos
que array
y objetos
son objetos
en realidad
los dos son objetos
y aquà lo que estamos
intentando hacer igual
son referencias
si es la misma referencia
en memoria
de este objeto
entonces
¿qué pasa?
que las referencias
son distintas
cuando se han creado
pues lo que se ha creado
ahà es algo
totalmente distinto
esto está
no voy a decir roto
pero es uno de los
grandes problemas
que ha tenido el lenguaje
seguramente
a la hora de aprenderlo
y mira que sencillo
javascript
pero esto ha dado
bastantes problemillas
para la gente
de
¿y cómo puedo intentar
que se pare
o sea
cómo puedo
mirar
si dos objetos
son iguales
son arrays iguales
de estos
han escrito artÃculos
hay un montón de trucos
utilizar stringify
utiliza el deep equal
utiliza un montón de cosas
¿vale?
y lo que se está buscando
muchas veces
es utilizar
tipos inmutables
¿no?
por ejemplo
pues para ver
si un tipo
es igual a otro
pues no lo puedes mutar
porque es el problema
¿no?
si tú empiezas a crearle
propiedades a un objeto
y tal
bueno
que vienen
las records
y las tuplas
para arreglarlo
¿qué son los records
y qué son las tuplas?
los records
digamos que son objetos
que son inmutables
y que por lo tanto
se pueden
se pueden comparar
con otros
vamos a poner un ejemplo
de un record
un record
lo podemos crear
de esta forma
¿vale?
podemos crear aquÃ
pues el nombre
que esto sea Miguel
¿vale?
esto será un record
ahora
¿qué es la diferencia
con un objeto?
pues que le hemos puesto
esta almohadilla aquÃ
esta almohadilla
lo que me está diciendo
es que esto no es un objeto
sino que esto es un record
¿vale?
y ahora lo podemos igualar
por ejemplo
uy
con otro record
podemos decir
esto es Miguel
vale
¡pum!
fÃjate
aquÃ
con los records
me dice que sÃ
que son iguales
estos records
esto lo que nos está
haciendo
es que la igualdad
realmente
entre dos records
sean
válidas
o sea
puedas comparar
los valores
de los dos
y saber
si son iguales
o no
uno de los problemas
también
que el stringify
por ejemplo
cuando hacemos el stringify
de la igualdad
entre dos objetos
al final
el orden en el que están
puede influir
aquÃ
si aquà pongo
la A
la pongo aquÃ
hola
y la A
la pongo aquÃ
¿vale?
vemos que también
me da true
o sea
ya está
da igual
el orden en el que está
en las keys
en el objeto
sino que realmente
lo que importa
es el valor
asà que
esto serÃa
el gran paso
en javascript
¿no?
el poder
poder comparar
por valor
tanto los objetos
que serán records
y las tuplas
que sean los arrays
esto mismo
que hemos visto
con un record
esto lo podemos hacer
con una tupla
la tupla
básicamente
también con la almohadilla
ponemos
un, dos, tres
y esto lo igualamos
con una tupla
un, dos, tres
¿vale?
y aquà tenemos
que esto nos da true
podemos comparar
ahora
el problema
que podemos tener
con esto
es que
no puedes utilizar
de repente
claro
dentro de un record
si tú utilizas
por ejemplo
links
y utilizas
un
utilizas un objeto
no puedes
¿por qué?
te dices
aquà te está dando
ya un error
te dice
oye
no puedes utilizar
un objeto
como valor
en un record
porque es que
entonces
te lo
te lo petas
o sea
ya dices
no este record
pues petado
porque si en un record
utilizas un objeto
o un array
que son valores
que ya no puedo comparar
pues ya no tiene sentido
que utilices un record
¿vale?
entonces no puedes utilizar
este tipo de datos
asà que vamos a tener
que cambiar totalmente
un poco el paradigma
alguien me preguntaba
por aquÃ
pues sà que es un gran paso
pero ¿cómo comparas objetos
que sà que han ido mutando?
el tema
es que los records
no se pueden mutar
o sea
si yo tengo aquÃ
esto
que tampoco lo he probado muchÃsimo
pero vamos a probarlo
si pongo aquÃ
esto es un record
¿vale?
y digo record.pepito
igual a hola
¿vale?
aquà ya te avisa
dice
no puedes añadir
la propiedad pepito
porque este objeto
no es extensible
no puedes
o sea
no puedes a un record
de repente
decirle
ah pues venga
le quiero añadir esto
¿sabes?
no puedes
no se puede hacer
y esto justamente
es lo que te evita
es que puedas mutar
un record
y rompas
esta igualdad
¿no?
esta comparación
estricta entre valores
y creo que esto
va a ser súper potente
porque esto
que está en stage 2
que es fase 2
o sea
tampoco le queda tanto
esto lo que nos está dando
es inmutabilidad
en tipos primitivos
de javascript
sin librerÃas
que nos va a
o sea
esto va a reventar
el tema del rendimiento
o sea
esto es
alguien me preguntaba
también por aquÃ
¿qué me he preguntado
por aquÃ?
¿el performance
de las tuplas
es bueno?
mira Lucas
el performance
de las tuplas
nativas
nativas
no en polyfill
obviamente
las nativas
lo va a petar
o sea
va a ser brutalmente rápido
mucho
lo deberÃa ser
mucho más rápido
que los arrays
porque a la hora
de comparar
estos valores
va a ser mucho mejor
que cualquier librerÃa
que utilices
que cualquier cosa
que hagas
entonces
además
al ser tipos
inmutables
que no puedes
mutarlos
no puedes modificarlos
y tal
va a ser mucho más rápido
o sea
va
esto a la larga
a lo mejor
las primeras versiones
pero ya os digo
que a la larga
esto va a ser
una gran diferencia
para javascript
esto
yo creo que va a llevar
a javascript
al siguiente nivel
a la siguiente fase
os lo puedo asegurar
palabra de mi dude
aquà dejo
pum
sellito
esto es
seguro
lo siguiente
que lo va a petar
dice daniel nieto
se puede meter un récord
dentro de otro
por supuesto
tú una vez que utilizas récords
además
y es lo más increÃble
de esto
mira
no sé si esto lo puedo
no lo puedo
vale
vamos a hacer esto
que esto que has comentado
me parece muy interesante
por ejemplo
vamos a mirar récord
como le llamo
nested récord
vale
nested récord
un nested récord
al final
si tú tienes aquÃ
esto
ponemos
a tiene a
y b
como se harÃa
aún este récord
entiendo que
pues asÃ
vale
sÃ
y b
tiene también
a
vale
asÃ
esto serÃa uno
vale
y ahora este
este
lo copiamos
y lo ponemos aquÃ
aquà lo que estamos teniendo
a
más pepito
fuera
pum
adiós pepito
aquà lo tienes
mira
true
o sea es nested
o sea que
es un récord
dentro de otro récord
y una vez que lo utilizas
lo puedes
lo puedes usar
sin ningún tipo de problema
y lo comparas
y funciona perfectamente
asà que no
o sea
sin ningún problema
entonces
la tupla se puede mutar
a
añadir otro elemento
claro
al final lo que pasa
es que
las
las tuplas
es un nuevo tipo
de dato
o sea que
no funciona
exactamente
como un array
o sea no es un array
no podemos hacer un push
pensando
que
es
básicamente
un array
vale
lo que se puede hacer
por ejemplo
es
creo que se puede utilizar
el spread
eso sÃ
el spread
y el rest
eso creo que sà que se
se puede hacer
si no me equivoco
lo podemos buscar
si no
seguro que se podrÃa
mirar
porque esto es algo
que seguro que la gente
necesita
asà que
o si no lo podemos intentar
a saco
a saco
a ver qué pasa
qué es lo peor que puede pasar
vamos a poner
tuple
creamos una tupla
vale
un dos tres
ahora
a esta tupla
another tuple
y le decimos
que esta tuple
es esta
y el cuatro
esto nos da
aquÃ
y le decimos
que me diga
que es esa
another tuple
y ahà lo tienes
ya está
esto es que
maravilla
esto es mágico
si esto no merece
40 likes
o sea
vamos
vamos
o sea
40 likes
ahora
pam
por las tuplas
sÃ
o sea
al final
añadir el último elemento
es tan fácil
como hacer esto
es utilizar el rest
y lo que
es eso
es que como son inmutables
siempre hay que crear
uno nuevo
siempre hay que crear
uno nuevo
cuando hacemos el push
el problema del push
es que
no
se está mutando
el array
y ya os digo
que no se pueden utilizar
los métodos
que conocemos de array
de hecho
pues como son tipos primitivos
ves
aquà tenemos
tuple
pues por ejemplo
para saber si es una tuple
pues tendrÃamos aquÃ
no me acuerdo como era esto
is tuple
para ver
esto deberÃa
creo que es asÃ
esto nos deberÃa dar true
en el caso de que
ves
si es una tupla
pues no dice si es true
pero si esto lo hacemos
por ejemplo
tuple is tuple
y le pasamos un array
pues no deberÃa decir que no
ahà está
false
ahà está
asà que
perfecto
vale
maravilloso
eh
bueno
es que nos van a quitar tantos problemas
mira es que Emilio me lo dice
y tiene toda la razón
dios que de problemas van a desaparecer
o sea es que va
es que
no
vamos
no sé
de qué vamos a trabajar
cuando esté esto
no lo sé
madre mÃa
mantendrá el orden de los elementos
yo creo que sÃ
que esto
o sea mantiene el orden de los elementos
sin ningún tipo de problema
de hecho son
o sea son iterables
estoy bastante seguro
de que son iterables
o sea
por ejemplo
num of tuple
vamos a ver
si esto
itera
vale
sÃ
tenemos aquÃ
ay perdón
son iterables
sin ningún tipo de
son un poquito
que no se ve
perdón
perdón
muy bien
gracias
gracias Diego
ahà está
me encanta
que estoy
sÃ
me encanta
que me digáis
que no se te ve
que no se te ve
eso me encanta
me chifla
la cámara tapa el código
ahà está
sà me pongo
me muevo
fuera de aquÃ
pam
aquà a este lado
muchas gracias
me encanta que me digáis
que no se me ve
vale
pues son iterables
vale
o sea que podéis utilizar un for off
y ya está
y los podéis iterar
sin ningún tipo de problema
obviamente
es lo que os digo
la norma del tuple este
pues sà que va a tener
ciertos métodos
por ejemplo el find
¿veis?
bueno vamos a ver si
si funciona
que no lo sé
n igual
ya os digo que esto
lo estoy haciendo aquà en vivo
porque no lo he probado
que todavÃa no he trabajado con esto
vale
pues sÃ
funcionan
el find
supongo que funcionarán
casi todos los métodos iterables
del array
casi todos
habrá alguno
que a lo mejor no
pero bueno
también por supuesto
deberÃamos tener
el length
porque es iterable
asà que
que vamos
que
que casi todo lo que ya conocemos
lo vamos a poder utilizar
sin ningún problema
solo que
de forma inmutable
para eliminar
no podremos eliminar
valores de la tupla
habrá que recorrerla
y crear una nueva
con los valores que quieras
buena pregunta
pues no lo sé
igual sà que
a ver
el slice
sà que lo
también lo
lo puedes utilizar
yo creo que
todo lo que sean
¿veis?
aquà funciona perfectamente
yo creo que
todo lo que sean
métodos que no mutan
no creo que tengáis
ningún problema
en utilizarlos
¿vale?
pero siempre tenéis que tener en cuenta
que van a ser
que devuelven
una nueva
una nueva copia
que no mutan
en el original
¿vale?
efectivamente
adiós
Jason String to 5
que genera la info
y la actitud de Midu
llame a suscribir
y le di like
muy bien Héctor
esa sà que es la actitud
madre mÃa
esa sà que es la actitud
para eliminar
no podremos vabular
esto ya lo he dicho
¿puedes crear un récord
a partir de un objeto?
sà que se puede
Lurting
sà que se puede
sà que se puede
sà que se puede
no sé si lo voy a crear
si lo voy a conseguir
pero creo que sà que se puede
creo que es tan fácil
como hacer esto
creo que es tan fácil
como hacer esto
ahà lo tienes
haces un new récord
y le pasas el objeto
y pasando del objeto
ese objeto
te lo transforma
en un récord
claro
aquÃ
creo que puede haber
temas
¿vale?
o sea
hay que tener en cuenta
que claro
los récords
deben tener
siempre valores
primitivos
primitivos
que sean comparables
en el sentido de
no puedes
guardar una función
por ejemplo
¿vale?
o sea
no puedes
tengo aquà un objeto
complejo
con funciones
e historias
y otros objetos
y pam
lo creo y tal
porque si no
lo que yo me imagino
es que
¿ves?
aquà lo tenemos
¿no?
un new record
de un objeto
que anida a otro objeto
ya nos está diciendo
oye
no lo podemos crear
¿vale?
o sea
un objeto sÃ
porque esto es
fácil
pero no
me imagino ya
que por ejemplo
funciones
pues tampoco
¿vale?
ni funciones
ni objetos
ni arrays
que estén anidados
de ese objeto
lo va a poder hacer
y la tupla igual
una vez que tengamos aquÃ
new tuple
pues new tuple
y le pasamos aquÃ
un array
esto
esto es exclusiva
esto está aquÃ
vamos
o sea
esto es cuando uno dice
esto vale la pena
ah pues no
mira
new tuple
no puede usar un objeto
como valor en un récord
¿qué récord?
y aquà no estoy utilizando
ningún récord
aquà ahora sà que se le ha ido
esto habÃa quedado
tan bonito todo
new tuple
pues pensaba que la tupla
pensaba que esto
también se lo iba a comer
pero no se lo ha comido
bueno
el
algo tenÃa que fallar ya
pero bueno
que está
el récord sà que
como podéis ver
se puede utilizar
y yo creo que esto
lo que va a hacer
es que nos olvidemos
un poco de los objetos
como a dÃa de hoy
conocemos los objetos
ya os digo
que esto está
en stage 2
que no está muy lejos
de que se haga una realidad
lo vamos a
lo tenéis aquÃ
por si queréis seguir
un poquito
cómo va esto
aquà está
el proposal
que habla un poco
de esto
de por qué se crean
bueno
inmutable
de un object inmutable
y tal
ha habido
diferentes propuestas
sobre la sintaxis
creo que la que
va ganando
entre comillas
es la del hash
seguro que aquÃ
explica mejor
el hecho de cómo
hacer ciertas cosas
que son normales
con arrays
y nada
y la sintaxis
aquà tenemos la sintaxis
errores y tal
asà que
la igualdad
que esto está
como para comérselo
como para comérselo
lo decÃa por aquÃ
que decÃa
sergio serrano
decÃa
robándote las palabras
está para verlo
anda que no
anda que no sergio
totalmente
vale
pues nada
vamos rápidamente
que quedan algunas más
esto
esto es como para daros
el subidón
sabes
esto ha sido de
wow
cómo está
cómo está la cosa
javascript
que lo peta
que lo peta
y ahora es como para
daros el bajón
siguiente curiosidad
2020
a dÃa 2020
del 5 de diciembre
todavÃa jQuery
está en un 77,1%
que de hecho
está subiendo
el uso
de jQuery
en enero del 2020
estaba un 74%
y ahora está un 77
¿cómo está React?
por ejemplo
¿cómo?
ay
no estoy compartiendo la pantalla
y querÃa que la vierais
vale
jQuery
aquà lo tenéis
77
77,1%
¿cómo está React?
lo está petando React
¿no?
que es súper famoso
0,3%
de hecho
según esto
Angular
está por encima
tiene un 0,4%
bueno
no sé cómo desfiables
son estos números
la verdad
pero
sà que os puedo decir
que jQuery
me puedo creer
que esté asÃ
porque
lo que más se utiliza
para crear páginas
en el mundo
es WordPress
y WordPress
trae jQuery
hasta que eso no cambie
de forma muy bestia
esto
tiene pinta
de que va a tardar
en bajar
por suerte
creo que la evolución
de JavaScript
no está atada
más con jQuery
de hecho jQuery
también fue uno
de los grandes
digamos
catalizadores
¿no?
de lo que necesitaba
el lenguaje
para evolucionar
aunque dirÃa
que incluso más
a nivel
bueno jQuery
tenÃa por ejemplo
los loops
los sits y tal
pero
creo que
que bueno
que nos queda
que nos queda
jQuery
todavÃa
que ya veis
que
es que alucino
cada vez
claro
supongo que
cada vez que se crea
un
se crea un
WordPress
pues ahà tenemos
VueGS
pues VueGS
0,4
hay que tener en cuenta
que estos son números
que son
uno
mundiales
y lo segundo
es que habrÃa que ver
realmente
cómo desfiables
son
porque no sé
exactamente
dónde sacan
estos datos
siempre salen
estos datos
de bueno
hemos hecho esto
y tal
se supone
que son fiables
pero no sé
hasta qué punto
son fiables
al detalle
creo que sÃ
que se pueden ver
tendencias
pero con estos
tantos porcentos
tan bajitos
la verdad
es que son difÃciles
pero puede ser
VueGS
es súper famoso
en China
asà que tampoco
me extrañarÃa
nada
nada
y muchas de las
de las que vemos
yo creo que
sobre todo
son algunas
que se han quedado
en páginas antiguas
y que bueno
se han quedado
internet al final
no para
de subir
y de crecer
pero se va manteniendo
esas páginas antiguas
hasta que se
se paga en el dominio
asà que a lo mejor
van por ahÃ
un poco los tiros
luego
sobre JavaScript
viendo esto
el cómo ha ido
creciendo JavaScript
en cuanto al peso
en las páginas web
asà que
vamos a ver
rápidamente esto
creo que hay datos
desde 2010
y esto es súper interesante
en HTTP Archive
tenemos el estado
de JavaScript
de cómo ha ido evolucionando
con el paso del tiempo
cuánto JavaScript
se carga en la página
en 2011
tenÃamos que
para desktop
habÃa 100k de JavaScript
y en móvil
eran sólo 52k
la mitad
pues eso
poco a poco
poco a poco
iba pasando el tiempo
sà que parecÃa
que decÃan
no la versión móvil
pues sÃ
tiene que ser
más o menos
tiene que ser
hasta que llegó un punto
me imagino que
el iPhone
lo estaba apretando
o las nuevas versiones
de Android
y dijeron
bueno si ya más o menos
están ahÃ
y además
alguien puede decir
¿por qué estos saltos?
¿sabes?
¿por qué pasan
estos saltos?
y algo me dice a mÃ
teniendo en cuenta
que WordPress
es el framework
o CMS
más usado
para hacer páginas web
en el mundo
creo que seguramente
esto tiene que ver
seguramente
con la versión
de WordPress
que estaba cargando
según sus scripts
y que puede tener
un impacto
en las gráficas
o sea
no serÃa tan raro
teniendo en cuenta
que WordPress
se utiliza casi
70 al 80%
de las webs
que hay
en internet
aunque nosotros
no las visitemos tanto
no paran de crearse
y a lo mejor
tienen pocos visitantes
pero al final
en las gráficas
pues están
pues total
empezamos con
dijimos 100k
y hoy en dÃa
estamos en 465
lo curioso de esto
es que aunque sà que vemos
crecimiento
que los últimos 3 años
y tal
en el último
si miramos la gráfica
un poco
a los últimos 6 meses
me imagino que la gente
se está empezando a concienciar
sà que vemos
una ligera bajada
asà que quién sabe
si esto es un cambio
de tendencia
no lo sé
ojalá que sÃ
ojalá que sÃ
¿qué más?
bueno
os recomiendo
por si os interesa
todo el tema
de la historia
de JavaScript
aquà tenemos otra curiosidad
que es esta página
maravillosa
JS25.org
que tiene aquÃ
una historia
que desde que se inicia
la World Wide Web
y os va comentando
un poco
pues eso
el primer navegador
Netscape
JavaScript
y de cada uno
podéis leer más
y bueno
leer más
que es la Wikipedia
que tampoco tiene mucho
pero bueno
creo que es interesante
ver un poco
el historiograma
¿vale?
de qué fue pasando
por ejemplo
JSON
se creó mucho más tarde
en 2011
2001
en abril de 2001
que Firefox 2004
y se van viendo
y se van viendo un poquito
lo de Ajax
que esto en realidad
es una cosa
que venÃa
de origen
de una tecnologÃa
de Microsoft
bueno
se puede ver
un poco
los hitos
que ha tenido
JavaScript
a lo largo del tiempo
y el último
mira
creo que se está haciendo
aquÃ
menciona
NextDS
a Svelte
WebAssembly
y lo último
Deno
Dino
¿vale?
que viene con JavaScript
y TypeScript
aquà verÃamos
que no necesitas
compilar
o transpilar
TypeScript
a JavaScript
sino que lo soporta
de forma nativa
una de las ventajas
de poder utilizarlo
en el servidor
luego
aquà viene un poco
la penúltima
que es mi historia
¿no?
de JavaScript
cuando conocÃ
por primera vez
JavaScript
y me encantarÃa
que nada
que compartirais
las vuestras
en mi caso
fue en la universidad
recuerdo 2004
yo estaba haciendo
estaba programando
con Lisp
estaba haciendo
una inteligencia artificial
para jugar
a un juego
de estrategia
horriblemente fatal
la inteligencia artificial
que estaba haciendo
pero el caso
es que mi profesor
me dijo
que le hiciese
una pequeña documentación
y que hiciese
una página web
de la documentación
de cómo utilizarlo
¿no?
porque decÃa
que era súper interesante
que empezas a hacer
webs y tal
eso en la universidad
imagÃnate
hace mucho tiempo
y recuerdo
que bueno
pues hice HTML
horrible
el HTML
todo en mayúsculas
que parece que estaba
gritándole a la página
y el estilo
ahà en lÃnea
y todo esto
y recuerdo
que tenÃa una funcionalidad
que se supone
que dependiendo
dependiendo
de si querÃas
una dificultad
o otra
o habÃa diferentes
jugadores
yo estaba encabezonado
que querÃa
que pudiera seleccionarlo
y cambiase
porque no sé
dónde lo habÃa visto
eso
y ahà fue
mi primer contacto
con JavaScript
que fue
mucho mejor
que con Java
que en Java
me acuerdo
que no me compilaba
las cosas
se me quedaba pinchado
el ordenador
y tal
pero claro
en JavaScript
yo flipé
porque
de hecho
justamente por eso
pasé luego a PHP
porque me encantaba
también la rapidez
en la que hacÃas algo
y lo veÃas inmediatamente
¿no?
y JavaScript
me acuerdo
pero perfectamente
de la primera sensación
que tuve
de
wow
es inmediato
es
hola
y me dice el error
tal cual
cuando en Java
cuando tenÃa que programar
el juego de ajedrez
que tenÃa que hacer
desde la práctica
pues se tiraba un ratillo
ahà compilando
y entonces a lo mejor
me fallaba
runtime exception
y me da errores
súper raros
obviamente el JavaScript
de aquella época
no tiene nada que ver
con el de ahora
pero lo poco
que lo utilicé
me acuerdo
de long click
ahà en mitad
del HTML
y tal
fue el primer contacto
pero que realmente
dije
wow
estoy haciendo magia
de una forma súper sencilla
y ese espÃritu
yo creo que fue
justamente
lo que buscaban
al inicio
de JavaScript
que era el hecho
de que realmente
tuviese la posibilidad
de hacer algo interactivo
de una forma súper sencilla
asà que
bueno
ese fue mi primer contacto
le tengo mucho cariño
desde entonces
como podéis imaginar
asà que
nada
dice Rodrigo
su primer contacto
primer contacto
fue con un programador
que me estaba enseñando
y lo que hizo fue
que lo odiara
pero Rodrigo
basta ya
que pasa contigo
Rodrigo
tengo que ir
y hacerte
de psicólogo
Fraporritmos
dice
te conocà en el curso
de React avanzado
ahora no paro
de ver tus vÃdeos
crack
muchas gracias
crack
hombre
tú se quedas
un crack
para cuando haces
un vÃdeo de Dino
algo asà avanzado
o los nuevos
que nos llega a ofrecer
ojalá tenga tiempo
tenga tiempo
si tengo tiempo
me encantarÃa
Shiwati Panda
una pregunta
¿cuáles son los iterables
y no iterables?
vale
básicamente iterable
es cualquier cosa
que se pueda iterar
o sea
un array
es iterable
pero hay más estructuras
de datos
que son iterables
en javascript
por ejemplo
los maps
y los sets
son it
los maps
y los sets
no los sets
el map es iterable
seguro
ahora tengo dudas
del set
¿el set es iterable?
bueno
hay maps
hay sets
yo creo que es iterable
sà sà sé
map y set
yo creo que son iterables
los weak maps
o sea
hay un montón de tipos
de estructuras de datos
en javascript
que son iterables
y por lo tanto
las tuplas
también son iterables
lo cual lo hace
súper interesante
y esos son iterables
por ejemplo
un string
bueno
un string podrÃa
no es iterable per se
pero puedes iterarlo
utilizando algún truquillo
un booleano
no es iterable
cosas asÃ
¿no?
asà que eso serÃa
un poco la diferencia
de ser iterable
o no iterable
¿vale?
¿qué más?
¿qué me dices por aqu�
lo
yo lo conocà en Damm
y me enamoré
Damm
supongo que es
desarrollo de aplicaciones
molonas
¿cuál es la M?
desarrollo de aplicaciones
no sé
¿qué edad tienes?
¿qué edad me echas?
mi primera vez lo dié
puesto que lo embedimos
dentro de plantillas PHP
yo también
empecé mucho con PHP
yo empecé mucho con WordPress
y la verdad es que
no lo dié tanto
a mà me gustó
me gustó
haciendo foros
dice Fosforus
yo también
haciendo foros
hice un montón
en 2014
durante la preparatoria
dice David
me imagino que mucha gente
fue en
en la universidad
es curioso
hay una cosa muy curiosa
sobre esto
y no sé
no sé si lo sabÃais
¿vale?
pero
el caso es que la gente
cree que Java
es mucho más antiguo
que JavaScript
y Java
más o menos
es de la época
no sé si unos meses antes
o un año antes
¿vale?
y sin embargo
Java
sà que
llegó
muy fuerte
a la
a las
no sé
a la esfera académica
en mi universidad
sin ir más lejos
pues era Java
¿no?
tuvo mucha popularidad
seguramente
porque hizo un muy buen trabajo
San Microsystems
y tal
pero bueno
que es curioso
¿no?
que Java
da la sensación
como que es mucho más maduro
o era mucho más maduro
en aquella época
y por lo tanto
fue donde
pues el cÃrculo académico
utilizó Java
¿no?
para muchas prácticas
y tal
y es curioso ¿no?
porque realmente
JavaScript
en aquel momento
tampoco tenÃa
mucha menos
experiencia
y hubiera sido
o mejor hubiera cambiado
todavÃa más
el panorama
no sé si para bien
o para mal
que hubiera sido
JavaScript elegido
para enseñar
¿no?
el lenguaje de programación
y tal
conceptos fundamentales
de la programación
¿ha probado la programación
funcional?
sÃ
de hecho una de las cosas
geniales que tiene
JavaScript
es que es multiparadigma
y no paramos
de hacer programación
funcional
a veces sin darnos cuenta
asà que
sÃ
hago muchÃsima programación
funcional
asà que
no sé
y lo recomiendo
siempre que podéis
conocà JavaScript
odiando primero Java
bueno
bienvenido al club
un abracito
yo conocà JavaScript
en la secundaria
y me agradó
qué suerte
yo en la secundaria
lo que utilicé
fue Visual Basic
y fue horrible
fue horrible
¿qué más?
me encantarÃa formar parte
de actualización
de la formación española
aquà hay nivel
para que salgan chavales
mandando
ya te digo
no es que sea nivel
hay un nivel brutal
¿para cuándo curso de ensamblador?
pues error 404
para cuando yo sepa
ensamblador
para cuando yo sepa
ensamblador
hace mil años
que no hago
lenguaje de ensamblador
lo hice para prácticas
en la universidad
hace mucho tiempo
vale
pues
dice por aquà David Lara
yo conocà JavaScript
en el 2015
en mis 15 años
para aplicar una beca
de la universidad
me tocó crear un CRUD
con PHP
JavaScript SQL Server
con ODBC
madre mÃa
muy bien David Lara
menudo
pedazo de crack
estás hecho también
bueno pues
queda una última
curiosidad
una última cosa
vale
hay una slide
hay una slide
que
que siempre
el creador de JavaScript
pone en
en sus charlas
bueno no siempre
a lo mejor
pero muchas de ellas
la ha puesto
y es que JavaScript
yo creo que la última curiosidad
y hoy hemos hablado de ella
vale
y es
lo odiado
que puede llegar a ser
¿no?
como lo odiamos
muchas veces
pero mucha gente
sobre todo lo odia
especialmente
a lo largo de mis años
de experiencia
he escuchado
la muerte de JavaScript
tantas veces
y tanta gente
me ha dicho
va a morir
¿para qué lo aprendes?
¿por qué lo haces?
¿por qué lo usas?
JavaScript
si da asco
si esto
se va a desaparecer
JavaScript en el servidor
es tan loco
para videojuegos
he escuchado de todo
¿vale?
a lo largo del tiempo
y hay una frase
que dice
el creador de JavaScript
que
si tienes que apostar
por algo
siempre apuesta
por JavaScript
¿vale?
esta es la slide
y la quiero compartir
con vosotros
porque decÃan
que primero
JavaScript
decÃan que no iba a ser útil
para crear
aplicaciones ricas
en internet
decÃan que no iba a ser rápido
decÃan que no podrÃa ser arreglado
¿no?
que todos los errores que tenÃa
que no se podrÃan arreglar
y hemos visto
¿no?
lo bien que ha ido evolucionando
con el tiempo
que no podrÃa hacer multicore
que no podrÃa hacer GPU
y estamos viendo realmente
verdaderas
bestialidades
con JavaScript
ha llegado JavaScript
pues hemos podido hacer
aplicaciones nativas
con JavaScript
hay videojuegos
que tienen sus menús
hechos con JavaScript
escribiendo JavaScript
que al final
se transpila en otra cosa
o lo que sea
pero al final
JavaScript
se ha convertido
como la lengua franca
del desarrollo web
del desarrollo
casi en general
de muchas cosas
es el primer lenguaje
ha empoderado
a un montón de gente
de salir
y poder crear
porque creo que
el lenguaje
pues la programación
es creativa
¿no?
es creatividad
entonces
todas las veces
¿no?
que han dicho
wow JavaScript
en el servidor
wow fatal
¿no?
y siempre se han equivocado
yo no sé
lo que pasará
el dÃa de mañana
no lo sé
pero creo que
si tuviera que apostar
dinero
si tuviera que dejar
ahà mi pasta
y decir
¿puedo?
tengo que apostar
por algo
yo también estoy de acuerdo
¿eh?
yo siempre apostarÃa
por JavaScript
asà que
el consejo
que nos da
en este caso
el creador de JavaScript
Brendan
lo hago
también
partÃcipe
yo me hago partÃcipe
y apostaré siempre
por JavaScript
y bueno
ahà lo dejo
que también
apostéis
y sigáis
haciendo de JavaScript
el mejor lenguaje
de programación
con la mejor comunidad
de que siga evolucionando
y que sigamos
todos
disfrutando
por muchÃsimos años
espero que dentro de 25 años
hagamos especial 50
y estemos todos aquÃ
bueno
todos y más gente
¿vale?
asà que
esta es la última curiosidad
que si tienes que apostar
apuesta siempre
por JavaScript
¿vale?
asà que
según el sistema SpaceX
del cohete
aquÃ
fue con
HTML, CSS y JavaScript
a ver
es cierto
la UI
está hecha con
web components
y por lo tanto
utilizan JavaScript
cierto es
aunque
bueno
hay cosas del core
que no están hechas
con JavaScript
pero está
pero obviamente
hay JavaScript
ahÃ
hay JavaScript
en el espacio
que no se diga
¿qué opinas
sobre usar
ServiceSend Events
en el 2020?
pues me parece
fantástico
para la utilidad
que puede tener
me parece genial
me parece que está
muy bien
Ria que es guácala
y si Ria que es guácala
JavaScript es guácala
paro ya
perdón
Rodrigo
¿qué pasa contigo?
¿qué pasa?
o sea
me sabe mal
no sé
si te tengo que enviar
un pastel
si
no sé
o sea
necesitas cariño
necesitas cariño
Brendan
dijo alguna vez
que en algún momento
no va a haber ninguna aplicación
que no use JavaScript
en algún punto
totalmente
fósforos
de hecho
hay una frase
también por ahÃ
que dice
que si una aplicación
se puede escribir
con JavaScript
será escrita
en JavaScript
bueno
es verdad
que yo por ejemplo
y esto
en el último vÃdeo
que hicimos
de Sbuild
es una herramienta
para crear
aplicaciones con JavaScript
que no está hecha
con JavaScript
está hecha con Go
y que esto le hace
que vaya súper rápida
y creo que
va a haber
muchÃsimas
muchÃsimas aplicaciones
que todavÃa
no van a ser
con JavaScript
y tiene sentido
JavaScript
tiene un mercado
que es muy grande
pero no lo va a ser
todo siempre
vale
entonces creo que
todo tiene su sentido
hacer juegos con JavaScript
es verdad
se puede hacer juegos
con JavaScript
pero seguramente
se pueden hacer juegos
todavÃa más potentes
con otras cosas
pero JavaScript
va a tener su mercado
y siempre lo va a tener
y entonces creo que
siempre va a ser útil
siempre
va a ser súper interesante
saberlo
el hecho de que
en la web
el lenguaje
que se pueda utilizar
fácilmente
sea JavaScript
por más que ahora
tenga WebAssembly
y tal
lo hace súper poderoso
súper potente
asà que
totalmente
y esta sÃ
Daniel Nieto
esta es la otra
siempre apostar
por la web
cualquier tecnologÃa web
siempre siempre
es que lo va a petar
siempre
PHP
y siguen a tope
también
totalmente
¿retomaste el libro de React?
estoy en ello
estoy en ello
pero a mucho trabajo
a ver
a ver
estoy intentando retomar
poco a poco
unas cuantas cosas
y espero
espero que sÃ
recomiendas usar
UseStrict
siempre que puedas
lo que pasa
es que UseStrict
va a dejar de ser
necesario
porque cuando se utiliza
ECMAScriptModules
que por desgracia
no escribimos tantos
como nos gustarÃa
entonces los módulos
son
son estrictos
por defecto
amigos y amigas
os pido
antes de irme
vuestro like
que os suscribáis
que lo compartáis
que compartáis el vÃdeo
si os ha gustado
aunque sea parte del vÃdeo
mira esta parte del vÃdeo
que esto es la leche
no te lo puedes perder
que te vas a perder esto
se lo pasas
por Twitter
si os ha gustado
compartidlo por ahÃ
compartidlo con vuestros amigos
con vuestra familia
comentadle a vuestro perro
como os ha gustado este vÃdeo
no sé
con vuestros colegas
de la universidad
compartid
y cuanto más seamos
más vÃdeos podremos hacer de estos
y más cosas de JavaScript
podremos seguir aprendiendo
y más disfrutaremos
de este lenguaje
asà que ya sabéis
dejad el like
antes de iros
suscribÃos al canal
y muchÃsimas gracias
a todos
por haber estado
acompañándome aquÃ
casi dos horas
que hemos estado
yo pensaba que
Ãbamos a estar menos
y la verdad es que
al final hemos estado
dos horas
hemos estado casi
150 por ahÃ
bueno no te preocupes
llegue tarde
todo el mundo llega tarde
ahora
no pasa nada
no pasa nada
se queda guardado aquÃ
para que lo veáis
tantas veces
como queráis
no os preocupéis
buenas noches
Yusef
me tengo que ir
José
me tengo que ir
que he estado aquà dos horas
ha llegado tarde
pero que se queda grabado
que no te preocupes
tú ahora aquà empiezas
Cristian dice
oye yo te sigo y comparto
y eso que soy de Angular
menudo crack
pero si es que
como no voy a querer Angular
si es que os tengo que querer
os tengo que querer
gracias Messi del Fronten
gracias a Tibeto
que es un pedazo de crack
o bipolar
y gracias
muchas gracias a todos
os quiero
un abrazo
cuidado mucho
cuidado mucho
también mucho cuidado
y nos vemos en el siguiente vÃdeo
aquÃ
en Midudev
¿vale?
hasta luego
cuidaos
un paro
tu
un paro
y
si
no
si
sea
웃
una
y
es