• [^] # Re: Fonction

    Posté par . En réponse au journal Plonk. Évalué à 3.

    Si tant est que cela puisse aider...

    Ça m'a pas mal aidé oui, merci.

    Le problème est le suivant, sur une page web (node est un autre cas), les scripts sont chargés et appliquer au contexte global.

    Est-ce une spécification de HTML, ou de JS?
    Si c'est JS qui spécifie cela, alors il ne me semble pas possible d'invoquer "la faute des autres" (je ne dis pas que tu le fais, attention) et la suite logique serait que JS est bancal.

    Donc au départ cette syntaxe apparait pour éviter les conflits de nommage de variable entre deux scripts de sources distincts

    De la même façon que les blocs C (ou C++, et même les fichiers bash à bien y réfléchir).

    quand à savoir si un main serait utile à JS, bof, si j’arrive pas à trouver le main d'un script, je préfère faire autre chose que de m'en servir.

    J'ai le même type de raisonnement, c'est pour ça que j'ai du mal avec le bash.
    D'ailleurs, en pratique, je ne suis même pas sûr que le fameux int main( int argc, char** argv ) soit autre chose qu'une convention.
    Après tout, les OS reconnaissent aussi int main( void ) comme point d'entrée. Pour moi, c'est juste une convention née d'UNIX (pour lequel le C à été inventé si je ne me trompe), les OS cherchant à exécuter un symbole particulier et il se trouve que celui-ci est main (le C n'inclue pas les paramètres dans la signature) dans le cas de windows, linux, *bsd... D'ailleurs, c'est faux: windows exécute le symbole winmain, pas main (enfin, main aussi).

    Il n'empêche que c'est une convention pratique et utile. Il m'est arrivé de manipuler du code PHP dans lequel je m'y retrouvais sans trop de problème. Mais quand je me mets en tête de contribuer à un projet avec plusieurs centaines de fichiers source, c'est quand même sympa de pouvoir faire un grep "int main" pour savoir ou commencer.

    Pour finir, cette structure tant à être désuète car on utilise de plus en plus des modules de chargement qui encapsule automatiquement le code dans une fonction pour éviter ces effets de bords d'écrasement de variable (cf AMD, require.js etc), et d'autres trucs.

    En ce qui me concerne, est ce que c'est beau, est ce que c'est bien : osef.

    Personnellement, je considère que ce qui est maintenable est beau, que ce qui est beau est simple, et que ce qui est simple est concis (et bien dans cet ordre). Hors, (f(){})() n'est pas concis, donc pas simple, donc pas beau, et donc difficile à maintenir.
    Opinion personnelle.