Cette question peut être facilement vue à l'aide des points d'arrêt. En fait, il s'agit d'un problème de timing d'exécution de la fonction. Une fois la boucle exécutée, i=3. , je ne peux que pour 3.
js est exécuté séquentiellement. Tout d'abord, toutes les boucles sont exécutées pendant le processus d'exécution, arr[0]= function(){return i;}, arr[1]= function(){return i;}, arr[2] = function(){return i;}En même temps, programmez i après avoir bouclé jusqu'à 3, puis appelez arr[0]() et d'autres appels. À ce moment, i dans la portée est 3, donc ce sera toujours le cas. 3.
PS : Pour cette question, vous devez d'abord exécuter arr = F(), sinon une erreur sera signalée~~
for(i=0;i<3;i++){循环体}
执行过程是赋初值0,然后执行判断语句i<3
,为true的话,执行循环体,循环体执行完之后执行i++
;所以当i执行到2的时候,i<3
为true,执行循环体,然后i++,此时i等于3,然后判断i<3
,判断为false,不执行循环体,退出循环,此时i=3
;Après la dernière boucle for, i++ a changé i en 3
Cette question peut être facilement vue à l'aide des points d'arrêt. En fait, il s'agit d'un problème de timing d'exécution de la fonction. Une fois la boucle exécutée, i=3. , je ne peux que pour 3.
js est exécuté séquentiellement. Tout d'abord, toutes les boucles sont exécutées pendant le processus d'exécution, arr[0]= function(){return i;}, arr[1]= function(){return i;}, arr[2] = function(){return i;}En même temps, programmez i après avoir bouclé jusqu'à 3, puis appelez arr[0]() et d'autres appels. À ce moment, i dans la portée est 3, donc ce sera toujours le cas. 3.
PS : Pour cette question, vous devez d'abord exécuter arr = F(), sinon une erreur sera signalée~~