Bonjour pourquoi utiliser un texte là ou une référence fonctionne
window.setTimeout(function () {alert("toto")}, 300)
ou
1 2
| toto = function () {alert("toto")};
window.setTimeout(toto, 300) |
la dernière version compressée donne la même chose ou avec obfuscator
eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0=1(){2("0")};3.4(0,5);',6,6,'toto|function|alert|window|setTimeout|300'.split('|'),0,{}))
ce qui fonctionne toujours très bien.
de façon générale mieux vaut utiliser une référence qu'un texte qui interprété donnera un appel à la référence.
par exemple ne pas faire
function toto() {alert("toto")};
<a id='truc' onClick='toto()'>...
qui sera évalué pour créer dynamiquement une fonction qui sera placé comme membre de l'élément truc
le navigateur va générer ceci:
1 2
| function toto() {alert("toto")};
document.getElementById('truc').onclick= function() {toto();}; |
mais
document.getElementById('truc').onclick=function() {alert("toto")};
ou encore
1 2
| function toto() {alert("toto")};
document.getElementById('truc').onclick=toto; |
en conclusion pensez aux références
A+JYT
Partager