Entonces, el operador ??= asigna el valor a la variable solo si el valor almacenado actual es nulo.
Tal vez me estoy perdiendo lo obvio, pero no puedo pensar en una solución ingeniosa (sin declaraciones if) para asignar solo si el valor no es nulo .
Estoy usando nodeJS para dar un poco más de contexto .
Quiero
let xr??= 2; // Updates 'x' to hold this new value xr??= undefined; // Has no effect, since the value to assign is nullish console.log(x); // 2EDITAR para dar más claridad a mi problema:
Solo quiero que a una variable se le asigne un nuevo valor , si ese nuevo valor no es nulo.
let iceCream = { flavor: 'chocolate' } const foo = 2.5 const bar = undefined; iceCream.price r??= bar // does not assign the new value because it is nullish console.log(iceCream.price) // expected to be error, no such property iceCream.price r??= foo // assigns the new value because it is not nullish but a float console.log(iceCream.price) // expected to be 2.5 iceCream.price r??= bar // does not assign the new value because it is nullish console.log(iceCream.price) // expected to still be 2.5No, eso no es un solo operador. Lo más cercano son dos operadores:
x = undefined ?? x;Agregar otra respuesta después de la aclaración, ya que editar la anterior parecía extraño.
La forma más sencilla en que puedo pensar en una solución sin si es la siguiente:
let iceCream = { flavor: 'chocolate' } const foo = 2.5 const bar = undefined; bar && (iceCream.price = bar) // Another possible solution if creating the property with a nullish value is ok for you: iceCream.price = bar || iceCream.price;Podría usar la asignación lógica AND .
De los documentos web de MDN:
let a = 1; let b = 0; a &&= 2; console.log(a); // expected output: 2 b &&= 2; console.log(b); // expected output: 0