En esta conferencia
repasemos cómo funciona el cortocircuito
con algunos operadores lógicos.
Entonces, en JavaScript, algunos operadores lógicos,
como el final y el operador o,
tienen una característica llamada cortocircuito.
Entonces, cortocircuito en operadores lógicos,
significa que, en determinadas condiciones,
el operador devolverá inmediatamente el primer valor
y ni siquiera mirar el segundo valor.
Y esto probablemente suene confuso.
Entonces, por supuesto, escribamos algo de código aquí.
Entonces, comenzando con el operador final,
el operador final sufre un cortocircuito cuando opera por primera vez.
Entonces, cuando el primer valor es falso
y luego devolverá inmediatamente ese primer valor.
Entonces usemos un console.log aquí
y hagamos lo que acabo de decir.
Entonces, cuando el primer valor es verdadero
el operador final regresará automáticamente
la segunda operante,
entonces el segundo valor, no importa cuál sea.
Entonces digamos algo de cuerda.
Y así, de hecho, inmediatamente obtenemos algo de cuerda aquí.
Y aquí no tenemos ningún cortocircuito.
El cortocircuito funciona en el operador final.
cuando el primer valor es falso.
Entonces aquí si tenemos falso, entonces hay un cortocircuito.
y el operador ni siquiera mira el segundo valor.
Entonces, en cambio, devuelve inmediatamente el primero aquí.
Y eso va a ser muy útil
básicamente para usar esto como un si.
Entonces, por ejemplo, podríamos hacer hasMovieAdaptation
y 'este libro tiene una película'.
Y aquí el operador, al igual que en esta línea anterior,
devuelve inmediatamente este valor falso
porque, como podemos ver aquí, su adaptación cinematográfica es falsa.
Y entonces el operador final hace cortocircuito.
y ni siquiera mira esta otra parte aquí.
Pero claro, si volvemos a usar el primer libro,
aquí mismo,
Entonces obtenemos que este libro tiene una película.
De nuevo, esto actúa un poco como un si, ¿verdad?
Y entonces, a veces en React, usamos eso para nuestro beneficio.
Y esto también funciona con los llamados valores verdaderos y falsos.
Entonces un valor veraz es básicamente cualquier valor
ese no es un valor falso.
Y el valor falso, simplemente escríbalo aquí,
es cero y, cadena vacía, nula e indefinida.
Y creo que en realidad hay uno más,
que no puedo pensar en este momento.
Así que sí, estos son los que realmente importan.
Entonces este no es uno de estos valores falsos.
y, por tanto, es un valor veraz,
lo que significa que para el operador final,
es como si esto fuera realmente un valor verdadero
porque, básicamente, detrás de escena
esto se convierte en verdadero.
Y como esto es cierto,
obtenemos el segundo valor de la operación.
Pero si usamos un valor falso, digamos cero,
entonces obtenemos el primero.
Así que aquí, una vez más, tenemos un cortocircuito en acción.
porque este es un valor falso, está bien.
Eso es suficiente para el operador final.
Ahora vayamos al operador o,
que funciona exactamente al revés.
Entonces este cortocircuita
siempre que el primer extremo superior sea verdadero
y luego lo devolverá.
Entonces, si tenemos verdadero o alguna cadena,
Eso realmente no importa aquí la palabra,
entonces inmediatamente nos volvemos verdaderos.
Pero si tenemos falso, obtenemos una cadena.
Y así, a partir de este ejemplo,
podemos ver que el cortocircuito
sucede aquí en este caso siempre que el primer valor sea verdadero.
Entonces esto es cierto.
Entonces el operador ni siquiera mira el segundo valor.
Ahora, podemos usar esto aquí, en realidad para nuestro beneficio.
para establecer valores predeterminados.
Probemos con un ejemplo, de hecho,
con los datos con los que estamos trabajando.
Y veamos primero el libro.traducciones.español.
Y entonces tenemos esta cadena en español aquí.
y eso es porque tenemos una traducción al español.
para este libro.
Pero para el otro libro, nuevamente, el libro número dos.
Creo que no hay ninguno.
Entonces sí, no está definido.
Y entonces digamos
que queríamos establecer un valor predeterminado en caso de que no hubiera ninguno.
Entonces podemos usar el operador final para eso.
Entonces digamos traducción al español.
es libro.traducciones.español o 'no traducido'.
Entonces el resultado de la traducción al español, ahora mismo,
no esta traducido
porque, recuerda, este no estaba definido.
Y indefinido es uno de estos valores falsos, ¿verdad?
Y como vimos aquí, cuando el valor es falso o falso,
entonces el operador final
pasa a la segunda parte del operador.
Entonces no hay cortocircuitos.
Y entonces aquí estamos usando eso para nuestro beneficio.
configurando esta cadena predeterminada aquí mismo.
Y entonces esto es lo que será el resultado.
de toda esta operación.
Y luego será asignado a esta variable.
Y si el libro fuera el número uno,
que no voy a hacer ahora,
pero sí, recuerdas que tenía traducción.
Y entonces esto aquí se convertiría en un valor verdadero.
y entonces tendríamos un cortocircuito.
Entonces este no sería evaluado.
Y luego el valor de la traducción al español.
sería simplemente este.
Genial, sin embargo, esto también puede salir mal.
porque esto funciona para todos los valores falsos
como cero también.
A veces eso puede tener algunas consecuencias.
Así que déjame mostrarte lo que quiero decir con eso.
Entonces en book.reviews.libranything.
Y ahora .reviewsCount es cero.
Entonces cada uno de estos libros tiene esta propiedad de reseñas.
y ahí tenemos algunas reseñas
de buenas lecturas y de la biblioteca cualquier cosa o algo.
Y entonces ahí dentro,
pues este no tiene nada
o en realidad lo hace,
pero, como viste aquí abajo,
eso solo está disponible en la edición pro
que tienes que pagar.
Y entonces sí.
Dentro de las reseñas tenemos buenas lecturas y cualquier cosa en la biblioteca.
Y luego cada uno de ellos tiene una calificación,
recuento de calificaciones y recuento de reseñas.
Pero para este libro número uno, que estamos usando ahora mismo,
el recuento de reseñas para libranything es cero.
Entonces usemos este valor.
así puedo mostrarles que esto también puede salir mal.
Entonces esto, estableciendo un valor predeterminado.
Así que cuenta, llamémoslo realmente contarMal.
Entonces book.reviews.libranything.reviewsCount o 'sin datos'.
Básicamente queremos que las reseñas cuenten,
pero si ahí no hay valor,
entonces queremos que no haya datos.
Así que veamos qué es countWrong, bueno, dice "sin datos".
pero sabemos que en realidad es cero.
Entonces querríamos que el conteo fuera cero.
y no "sin datos" porque en realidad hay datos, ¿verdad?
Entonces para el libro uno
por ejemplo, o cualquier otro libro,
hay este otro número.
Entonces algo que no es cero.
Y aquí entonces el countWrong es realmente correcto.
Así que aquí 452 es exactamente lo que queremos,
pero no cuando es cero.
Entonces, cuando este valor es cero, es un valor falso.
Y entonces, cuando este es un valor falso,
cual es el cero,
el resultado de este operador será la segunda parte,
lo cual en este caso, nuevamente, es incorrecto.
ahora a solucionar esto
JavaScript ha agregado recientemente un nuevo operador lógico
que se llama operador coalescente nulo.
Entonces un nombre muy extraño.
Pero lo que importa
es que funciona de manera muy similar al operador or,
pero también produce un cortocircuito para valores falsos.
Así que déjame mostrarte lo que eso significa.
De nuevo, const, ahora llamémoslo contar,
es igual a book.reviews.libraanything.reviewsCount.
Y luego signo de interrogación, signo de interrogación, "sin datos".
Entonces aquí tenemos básicamente exactamente lo mismo,
pero en lugar de usar o,
Estamos usando la fusión nula.
Y ahora el recuento ya no será "sin datos".
pero será cero.
Entonces este operador coalescente nulo
sólo devolverá el segundo valor
cuando el primer valor es nulo o indefinido,
pero no cuando es cero o una cadena vacía.
Y entiendo que esto suena muy confuso.
probablemente ahora mismo,
pero lo verás en la práctica
que esto hace toda la diferencia
y es otra buena adición aquí,
éste, a JavaScript.