Pourquoi la fonction est-elle entre parenthèse?

Question:

Pourquoi la fonction est-elle enveloppée dans une parenthèse? J'ai retiré ce code entre parenthèses et ça n'a aucun problème.

Quel est l'avantage d'avoir le code dans une (function () {… Code ici …}) (); Comme c'est le cas dans l'exemple suivant?

Code:

(function() { "use strict"; // Doesn't work because strict mode // enforces the fact that the second example shouldn't work if (true) { function fn1() { // This won't run console.log("doesn't work -- have a great Die Hard Day XIII"); }; fn1(); } })(); 

Code ici: qu'est-ce que l'envoi du mot JQuery comme paramètre fait pour cet espace de noms. Je sais que la raison pour laquelle la fonction est jointe (…) est de créer un espace de noms. Je suppose qu'une meilleure question serait de savoir pourquoi on passerait dans une variable, mais j'imagine que ce serait dans le cas où un autre espace de noms aurait besoin de la variable.

 ( function( $ ) { // Init Skrollr var s = skrollr.init({ render: function(data) { //Debugging - Log the current scroll position. //console.log(data.curTop); } }); } )( jQuery ); 

J'ai retiré ce code entre parenthèses et ça n'a aucun problème.

Ce n'est pas correct; Il ne peut pas exécuter (ou même être analysé) seul. JavaScript voit function dans un endroit où une déclaration de fonction peut être et suppose qu'il s'agit d'une déclaration de fonction. Les parenthèses sont utilisées pour forcer le contexte à être une expression. La pratique est redondante si elle est sans ambiguïté une fonction littérale – par exemple, dans une déclaration variable – mais beaucoup la trouvent plus lisible. Il existe une option jsHint pour l'appliquer , par exemple.

Parce qu'ils l'appellent:

 (function() { ... })(); ^^