1) se exports non è undefined i metodi vengono agganciati a quell'object, altrimenti come fallback vengono esportati nell'oggetto window. è un costrutto ternario
2) Le parentesi aggiuntive sono necessarie per far sì che la funzione produca un lexical scope e che tutto il costrutto sia visto comedove la seconda coppia di parentesi è l'invocazione di tutta l'espressione (cioè la funzione)codice:(<expression>)()
si può comunque scrivere (ed è la versione più diffusa)codice:(<expression>())