Código PHP:
var valor = A || B;
// esta sentencia equivaldría a lo siguiente:
var valor;
if( A ) valor = A;
else valor = B;
// de esta manera:
var valor = 0 || 12; // valor vale 12
var valor = undefined || 45; // valor vale 45
var valor = -15 || null; // valor vale -15
Código PHP:
function miFunc(elementos) {
var elementos = elementos || 1;
}
//aquí elementos dentro de la función siempre será el valor que le demos, pero si no le damos valor valdrá 1
Pero tengo algunas dudas con este operador, no consigo entender bien su funcionamiento. Creo que escoge el valor que hace true. He descubierto que el orden SÍ importa. Si los dos elementos dan true se escoge el primero ( 12 || 12.5 ==> 12 ) ( 12.5 || 12 ==> 12.5 ).
Si los dos elementos dan false hay una preferencia, la cual no logro entender todavía, pero espero que exista. No se escoge el primero, lo raro es que siempre se escoge el último. Voy a poner un par de ejemplos que me he encontrado:
Código PHP:
// FALSE
Derecho: false || undefined = undefined
Revés: undefined || false = false
Derecho: false || NaN = NaN
Revés: NaN || false = false
Derecho: false || null = null
Revés: null || false = false
// CERO
Derecho: 0 || undefined = undefined
Revés: undefined || 0 = 0
Derecho: 0 || NaN = NaN
Revés: NaN || 0 = 0
Derecho: 0 || null = null
Revés: null || 0 = 0
// NaN
Derecho: undefined || NaN = NaN
Revés: NaN || undefined = undefined
Derecho: NaN || null = null
Revés: null || NaN = NaN
¿Existe alguna preferencia para estos operadores?
¿Si dan los dos true se escoge el primero? ¿Si dan los dos false se escoge el último?, ¿se puede confirmar ésto? En ese caso es interesante porque en el ejemplo de los argumentos opcionales, si quiero que elementos sea 0 cuando le pase undefined, tendría que poner el 0 al final.
¿Alguno sabe algo de ésto?
Gracias por participar