J'ai rencontré un tel problème lors de l'écriture de JS aujourd'hui :
function init() {
var btn = document.getElementById('sort-btn');
btn.onclick = btnHandle();
}
Ce qui précède est ma partie de code JS. Faites attention ici, la deuxième phrase de la fonction init, btn.onclick = btnHandle();
Mon intention initiale est de cliquer sur le bouton et d'exécuter la fonction btnHandle, mais la situation réelle est la suivante. après avoir actualisé la page, btnHandle La fonction est exécutée directement.
Ensuite, j'ai changé le code en ceci
function init() {
var btn = document.getElementById('sort-btn');
btn.onclick = btnHandle;
}
Après avoir supprimé le () dans l'instruction btn.onclick = btnHandle();, le code s'exécute normalement comme je le pensais.
Pourquoi est-ce ? btnHandle et btnHandle()
btn.onclick
accepte une fonction, qui représente l'exécution de cette fonction lorsque btn est cliqué, et votrebtnHandle()
représente l'exécution de cette fonction, donnantbtn .onclick
est sa valeur de retour, bien sûr elle est exécutée en premier.btn.onclick
接受一个函数,代表当 btn 被点击的时候执行这个函数,而你的btnHandle()
代表了执行这个函数,给btn.onclick
的是他的返回值,当然就先执行了。下面的写法就代表着,当
L'écriture suivante signifie que lorsquebtn.onclick
时,执行btnHandle
btn.onclick
, exécutez la fonctionbtnHandle
. #🎜🎜#btn.onclick = btnHandle();Ce code signifie attribuer le résultat de l'exécution à l'événement de clic
Cela signifie que lorsque vous actualisez la page, la fonction init sera exécutée, et après l'exécution de la fonction init, lorsque onclick est lié
Cette ligne de code btn.onclick = btnHandle();#🎜 🎜#équivaut à exécuter la méthode btnHandle puis la valeur de retour de la méthode est attribuée à btn.onclick.
Et btn.onclick = btnHandle;
est équivalent à btn.onclick = function(){xxxxx};
C'est-à-dire que la référence de la variable btnHandle est affectée à btn.onclick #🎜🎜 #Ainsi, lorsque l'événement click est déclenché, la méthode fonction représentée par btnHandle sera exécutée