var a = 0;
function fn(){
ssss.call(null,a)
// 为什么 定时器里面的匿名函数加上字符串跟直接执行不同???
setInterval("ssss()", 1000);
setInterval(ssss(), 1000);
}
function ssss(){
console.log(++a)
}
fn();
Veuillez demander au maître de vous expliquer le principe derrière cela
Le premier paramètre de setInterval accepte une chaîne et analysera la chaîne dans une instruction de fonction pour exécution.
Tout d’abord, jetons un coup d’œil à l’explication du W3C sur setInterval
![](http://img.php.cn/upload/image/000/000/000/e5338608379207ec0490c163c3f57bdb-0.png)
, puis regardons-la
setInterval("ssss()", 1000);
setInterval(ssss(), 1000);
1. Ensuite, une erreur sera signalée lors de l'exécution de
Il n'y a pas de valeur de retour, mais notez qu'il y a une phrase ssss.call(null,a) dans la fonction fn, il y a donc une valeur de retour dans la fonction fn. De plus, la valeur de retour n'est qu'une fonction, elle répond donc aux exigences de la fonction setInterval et continuera à être exécutée2.
Si vous n'ajoutez pas de guillemets doubles, vous devez supprimer les parenthèses et écrire simplement le nom de la fonction