La repuesta: primero 1, después 2.
alert( alert(1) || 2 || alert(3) );La llamada a alert no retorna un valor. O, en otras palabras, retorna undefined.
- El primer OR
||evalua el operando de la izquierdaalert(1). Eso muestra el primer mensaje con1. - El
alertretornaundefined, por lo que OR se dirige al segundo operando buscando un valor verdadero. - El segundo operando
2es un valor verdadero, por lo que se detiene la ejecución, se retorna2y es mostrado por el alert exterior.
No habrá 3 debido a que la evaluación no alcanza a alert(3).