buenas...
hay dos partes fundamentales para entender el código. primero el
orden de prioridad de los operadores, y segundo la coherción de los operandos. en este caso particular, primero se evalua la expresión
+[0]. ahí el operador unario positivo ( + ) implica que el operando es un valor positivo. lo que le sigue es un array literal con un solo elemento. un array es un tipo de objeto. como ves, este objeto no representa un valor númerico por si mismo. dada la inconsistencia de un operador númerico con un objeto, ocurre un proceso de coherción donde se intenta convertir ese array en númerico para que el operador pueda tener efecto. en este caso, el proceso consiste en transformar primero el array en un string ( '0' ) y luego se transforma en un entero ( 0 ). por tanto, la siguiente expresión es
0 && acción. finalmente sucede lo que indicas, esta operación es como si fuese un
if. donde si el primer argumento evalua a falso, entonces devuelve el primer argumento. si evalua a cierto, devuelve o evalua la siguiente expresión.
ahora bien, tenga cuidado si el array contiene más de un elemento ya que en el proceso de coherción el string resultante podría ser algo como '0,1' para el array [0,1]. al no ser un string válido para ser transformado a números, entonces el intérprete genera el valor
NaN.