Ces deux codes sont-ils équivalent ?
Bonjour,
J'ai plusieurs scripts js à charger de façon asynchrone dans ma page.
(Dons celui de google-analytics qui me sert d'exemple.)
Le code de base de google-analytics est le suivant :
Code:
1 2 3 4 5 6 7 8
|
<script>
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> |
Du coups ça donne envie d'écrire une fonction async(src) pour rendre le code plus lisible :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<script>
function async(src) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = src;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);
}
async(('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js');
//async('un_autre_script');
</script> |
Mais est-ce vraiment équivalent ?
Dans le code de google-analytics y'a ça :
Code:
1 2 3
| (function() {
// CODE
})(); |
Qu'est ce que ça fait exactement ?