Salut,
Alors, c'est une syntaxe un poil plus 'compliquée' que le javascript basique.
Ligne 1 : on créée un objet MULT. Si cet objet existe déjà, on ne le change pas. S'il n'existe pas (ou vaut fals, undefined, 0, null, ...), on lui assigne un objet vide.
Ligne 2 : c'est ce qu'on appelle une IIFE (Immediately Invoked Function Expression) : c'est une fonction anonyme qui a l'ensemble de son scope privé, et qui est appelée immédiatement, avec les arguments passés en parenthèse à la fin de la définition de cette IIFE. Ici, le passage des arguments est fait en ligne 24.
Ligne 22 : C'est ça. La fonction a reçu un argument NS, qui est un objet. Elle créée une fonction tableMultiplication, et la rentre dans l'objet NS. Comme l'objet existait avant l'appel de la fonction, il est passé par référence, donc si on le modifie à l'intérieur de l'IIFE, les changements seront conservés une fois que l'on sera sorti de l'IIFE (on fais une closure).
Ligne 24 : comme dit plus haut, on passe l'objet MULT (qui jouera le rôle d'un namespace) à l'IIFE ligne 22.
D'une manière générale, je trouve le code inutilement complexe, là, comme ça, tiré de son contexte.
Au niveau du fonctionnement, on a une usine à fonctions table de multiplication (l'IIFE du début) qui remplit l'objet passé (MULT) avec la fonction générée. La fonction ecrireTableDocument prends en argument un tableau déjà tout fait, et l'insère dans l'élément d'ID TP1TableMulti dans le document . La fonction ecrireTableDirect est un wrapper autour de cette dernière fonction, elle prends un entier, génère la table de multiplications pour cet entier en appelant la fonction tableMultiplication de l'objet global MULT, puis le passe en argument à ecrireTabelDocument.
Ligne 35, on fait un alias pour avoir une copie de ecrireTableDirect en ecrireTable.
Enfin, les dernières lignes sont aussi une IIFE. A l'intérieur, on définit une fonction init qui crée le tableau de la table de multiplication de 5 et l'insère dans le document. Cette fonction init n'est appelée que lorsque tout le document et les images sont chargés, avec l'avant-dernière ligne qui ajoute l'événement de chargement ("load") à la fenêtre.
Du coup, je vais te laisser chercher un peu pour la question de ce qui est exécuté dans quel ordre, tu devrais avoir toutes les infos pour le faire maintenant.