Ahora, aún más moderno
que el operador coalescente nulo
que acabamos de hablar
son tres nuevos operadores de asignación lógica
que se introdujeron en ES 2021.
Así que veamos cómo funcionan.
Y para hacerlo de manera efectiva,
Comencemos rápidamente creando dos nuevos objetos de restaurante.
Entonces llamaré al restaurante uno.
y restaurante dos.
Y son extremadamente simples.
solo tienen un nombre
y entonces este tiene una propiedad,
número de invitados,
y pongámoslo en 20 aquí.
Y luego también habrá un restaurante dos.
Y, de hecho, dupliquemos este aquí.
Restaurante dos.
Llama a esto en La Piazza.
Y este en realidad
no tiene la propiedad número de invitados
pero tiene dueño.
Así que Giovanni Rossi, o lo que sea.
Bien, y lo primero que queremos hacer ahora
es establecer un número predeterminado de invitados
para todos los objetos del restaurante
que no tienen esa propiedad.
Entonces, en este caso, es solo este restaurante aquí.
pero vamos a fingir que los tenemos
para que obtuviéramos estos restaurantes de algún tipo de API,
y ahora queremos aplicar algo a todos ellos.
Entonces, en este caso,
básicamente sumando el número de huéspedes propiedad
a los objetos que no los tienen.
Y comencemos usando la herramienta que ya conocemos
para hacer esto.
Y ese es el operador or.
Así que ya sabemos cómo podemos hacer esto usando
el operador or, ¿verdad?
Así que digamos resto2
.número de invitados debe ser igual a rest1.numGuests
o 10.
Así que recordemos rápidamente que esto funciona
debido a un cortocircuito.
Así que en el operador or,
si el primer valor es verdadero,
así que este de aquí, luego ese primer valor
inmediatamente será devuelto y el segundo valor
ni siquiera será evaluado.
Así que ese es este de aquí.
Y así, al hacer esto,
y aquí debería haber numGuests,
así que de nuevo al hacer esto,
aquí estamos devolviendo el número de invitados
si existe, entonces si no es falso,
y en caso contrario se va a devolver el 10.
¿Bueno?
Y de hecho, dupliquemos esta línea aquí.
Pero primero, debería arreglarlo.
porque, por supuesto, el número de invitados en el restaurante dos
debe establecerse en función del número
de comensales que están en restaurante dos o no.
Pero de todos modos, duplicando esto ahora
y luego hacerlo para ambos restaurantes aquí
para que podamos ver el resultado
aquí para ambos objetos.
Entonces, veamos.
Y aquí vamos.
Así que el segundo aquí no tenía un número de invitados.
y ahora numGuests es 10.
Y de nuevo, eso se debe a un cortocircuito.
Así que esto aquí volvió indefinido
y entonces el segundo fue devuelto,
mientras aquí en este,
este valor era 20
y así es este 20 que inmediatamente fue devuelto.
Así que nada nuevo hasta este punto.
pero ahora déjame presentarte
el primer operador de asignación lógica,
que es el operador de asignación o .
Así que con ese operador,
vamos a ser capaces de escribir lo mismo básicamente
de una manera más concisa.
Entonces rest1.numGuests,
y ahora en vez de repetir lo mismo otra vez
como lo hice aquí,
Puedo simplemente escribir o igual y luego 10.
Y eso es.
Así que esto aquí es exactamente igual que este
pero de una manera más concisa.
¿Bueno?
Hagamos lo mismo con el restaurante dos.
Y si comentamos estos dos ahora,
entonces como ves el resultado es exactamente el mismo.
Excelente.
Así que escribamos aquí el operador de asignación OR.
Y básicamente, este operador asigna una variable
a una variable si esa variable actualmente es falsa.
Así que de nuevo, exactamente lo que está pasando aquí
porque esta variable actualmente es falsa
y así se le asignará el valor de 10.
Genial, así que funciona muy bien,
excepto en una situación.
Que en realidad ya nos encontramos antes
en la conferencia anterior.
Así que dupliquemos esto aquí.
Comenta este.
Y ahora configurando el número de invitados a cero,
que es un número perfectamente razonable, ¿verdad?
Pero mire lo que sucede si luego ejecuto este código nuevamente.
Como podemos ver aquí,
es volver a tener 10,
aunque lo ponemos a cero aquí.
Entonces, ¿puedes adivinar por qué está sucediendo eso?
en base a lo que aprendimos en la última lección?
Bueno, cero es en realidad un valor falso,
y entonces este operador de asignación OR
en realidad está funcionando bien.
Así que esto aquí ahora mismo es falso
y por lo tanto, entonces se le asignará este valor de 10,
que es exactamente lo que hace este operador.
De nuevo, el operador de asignación OR lógico
asignará un valor a una variable
si esa variable exacta es falsa en este momento.
Sin embargo, afortunadamente, tenemos una buena manera de resolver esto.
Así que copiemos todo esto, póngalo aquí,
comenta estos dos
porque en realidad no funcionan.
Así que aquí también tenemos
el operador de asignación lógico nulo.
suena un poco complicado
pero en realidad todo es
es cambiar el o por el operador coalescente nulo.
Así que vamos a escribir eso también aquí.
Operador de asignación nula.
Así que si lo guardo ahora,
entonces vuelve a cero aquí.
Y ese es exactamente el resultado correcto aquí.
Solo recordemos aquí
eso nulo básicamente significa nulo
o indefinido, y justo aquí en el restaurante dos,
el número de invitados es indefinido
y por lo tanto, entonces los 10 serán asignados
a esa variable.
Y así, en pocas palabras,
el operador de asignación nula
asignará un valor a una variable
si esa variable exacta es actualmente nula.
De nuevo, ese es el caso en el restaurante número dos.
Bueno.
Y como probablemente puedas adivinar,
también tenemos el operador lógico y de asignación.
Y para aprender sobre eso,
digamos que queremos anonimizar los nombres
de los dueños del restaurante.
Entonces, cuando actualmente hay un propietario,
como aquí en este objeto,
básicamente queremos reemplazar esta cadena aquí
con la cadena anónimo.
Entonces, ¿cómo podríamos hacer eso de nuevo usando las herramientas
que ya sabemos?
Bueno, digamos rest2.propietario
y ahora usemos por ahora solo un operador and.
Entonces podemos decir rest2.propietario
y luego vamos a escribirlo así.
Anónimo, ¿de acuerdo?
Veamos por ahora si esto funcionó.
Y de hecho, lo hizo.
Entonces reemplazó la cuerda que teníamos aquí antes
con este anónimo.
Y entonces recordemos por qué esto funciona.
Bueno, una vez más, se debe a un cortocircuito.
Y en el caso particular del operador and,
se cortocircuita cuando el primer valor es falso,
y luego devuelve inmediatamente ese valor falso.
Entonces, en este caso, eso no es lo que sucede.
Así que esto es verdad en este momento
y por lo tanto, el segundo valor
luego será evaluado y devuelto.
Así que si duplicamos esto,
como esto,
entonces ves que ahora se está configurando
a indefinido porque bueno,
el dueño del restaurante1 no existe.
Entonces esa propiedad no está aquí.
y entonces este valor es indefinido.
Y dado que el operador y los cortocircuitos
cuando el primer valor es falso,
bueno ese es el valor
que se devuelve inmediatamente.
Entonces, de nuevo, ya aprendimos sobre eso un poco antes.
en la sección,
y por eso no voy a profundizar mucho
en los detalles aquí una vez más.
Lo que voy a entrar en detalle
es que ahora podemos reemplazar una vez más
esta variable duplicada aquí.
Entonces, básicamente, reemplazándolo con el operador de asignación y.
Entonces, para hacer eso, puedo escribir rest1
&& igual, y luego copiemos esta cadena.
Muy bien, y copiándolo para el restaurante dos.
Y luego puedo comentar estos dos
y solo por el bien de la integridad,
también lo escribimos aquí.
Ahora, y obtenemos un error aquí
y eso es, por supuesto,
porque se me olvida el numero de invitados,
y en realidad, es .propietario, por supuesto.
Entonces .propietario.
A ver, y ahí vamos.
Entonces, el propietario ha sido reemplazado por anónimo en este caso,
y aquí en el caso del primer restaurante,
el resultado es aún mejor ahora
que lo que teníamos antes
porque con este código aquí,
en realidad teníamos el propietario configurado como indefinido,
que no era realmente lo que queríamos.
Ahora simplemente no está aquí.
Y básicamente, cuál es la lógica
y el operador de asignación hace
es asignar un valor a una variable
si actualmente es veraz.
Está bien.
Así que claramente, esto aquí fue falso.
porque no existía.
Y entonces no pasó nada.
Entonces el objeto permaneció exactamente igual.
Entonces aquí esto aquí era de hecho verdad,
por lo que fue Giovanni antes.
Y así fue reemplazado ahora con esta otra cadena.
Y de nuevo, si alguna vez necesita asignar un valor
a una variable que ya está definida,
por lo que tiene un valor que actualmente es verdadero,
entonces puede usar este y el operador de asignación.