Ya existe una respuesta aceptada, pero me gustaría mencionar, que el O-operador también se llama predeterminado-operador, porque no devuelve un booleano, sino el argumento de la mano izquierda o derecha.
Igual va para el operador AND, que también se llama guardia-operador.
Salida crockford's Survey of the JavaScript Programming Language para más detalles:
El operador & & se llama comúnmente lógico y. También se lo puede llamar guardia. Si el primer operando es falso, nulo, indefinido, "" (la cadena vacía) o el número 0, entonces devuelve el primer operando. De lo contrario, devuelve el segundo operando. Esto proporciona una manera conveniente de escribir una verificación nula:
var value = p & & p.name;/* El valor del nombre solo se recuperará de p si p tiene un valor, evitando un error. */
The || el operador se llama comúnmente lógico o. También se puede llamar predeterminado. Si el primer operando es falso, nulo, indefinido, "" (la cadena vacía) o el número 0, entonces devuelve el segundo operando. De lo contrario, devuelve el primer operando. Esto proporciona una manera conveniente de especificar valores predeterminados:
value = v || 10;/* Use el valor de v, pero si v no tiene un valor, use 10 en su lugar. */
Supongo que sería si Date.now por algún motivo devolviera un 0, entonces, en su lugar, establecería $ time para el valor de retorno de la función ...? – peirix
@peirix: Adivinaste mal. $ time será una función que devolverá la Fecha actual. Está configurado para ser un alias de Date.now si está definido (no es falso) o la función suministrada de lo contrario. –
Ah, es por eso que no lo configuré como una respuesta.No hay forma de revocar un comentario: p Entonces, uno debería saber más acerca de la variable 'Date.now' para saber completamente cómo funcionaría esto, entonces? – peirix