1. Définir des paramètres formels dans une fonction mais ne pas transmettre de paramètres réels équivaut à définir une variable mais ne pas attribuer de valeur, donc a dans ce qui suit n'est pas défini
1 function test(a){2 console.log(a)//undefined3 };4 test();
2. Dans IIFE, la fenêtre est passée en tant que paramètre réel, ce qui évite de rechercher la fenêtre globalement à chaque fois lors de l'exécution du code, améliorant ainsi l'efficacité. Mais pourquoi undefined est-il spécifié dans le paramètre formel ? ci-dessus Définir un paramètre formel dans une fonction équivaut à le définir mais à ne pas lui attribuer de valeur, donc indéfini est toujours indéfini dans cette fonction immédiatement exécutée. Par conséquent, même si la valeur de undefined est modifiée globalement, cela n'affectera pas le undefined dans cette fonction auto-exécutable. Cependant, dans Chrome 59 et versions ultérieures, et Firefox 53 et versions ultérieures, la modification d'undefined n'est pas autorisée, ni dans toutes les sorties. est indéfini. Sous IE8, les valeurs non définies peuvent être modifiées et la sortie est 8 et indéfinie, donc le passage de paramètres formels peut garantir dans la plus grande mesure l'impact des variables modifiées en externe sur la fonction interne dans divers navigateurs. Il doit y avoir des parenthèses avant IIFE sinon une erreur sera signalée.
1 //在ie8中2 var undefined = 8;3 (function( window , undefined ){4 console.log(window.undefined) //85 console.log(undefined); //undefined6 })(window);
//在chrome和Firefox中var undefined = 8; (function( window , undefined ){ console.log(window.undefined) //undefinedconsole.log(undefined); //undefined})(window)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!