Faut-il éviter de déclarer des fonctions au sein des fonctions (sauf pour les fermetures intentionnelles) ?
迷茫
迷茫 2017-05-19 10:23:40
0
3
574
$('.dom').on('click', function () {
    function test() {
        console.log('abc');
    } 
});

Le test de fonction est déclaré à chaque clic, puis le rappel de clic est exécuté et GCé. Si le dom est cliqué plus d'une fois, chaque rappel de clic aura une déclaration de fonction supplémentaire. Je me souviens que la spécification jshint n'en a pas. autoriser l'écriture de déclarations de fonctions. La situation actuelle dans la boucle n'est-elle pas similaire ? Alors, quelle est la meilleure façon de gérer cela ? Dois-je déplacer la position de déclaration de la fonction de test vers l'extérieur ? Cela entraînera une fermeture et la fonction de test ne pourra pas être recyclée. Si l'utilisateur n'utilise cette logique qu'une seule fois, elle le sera évidemment. une perte. Que dois-je faire? ~

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(3)
过去多啦不再A梦

Il y a une différence entre une boucle et une fonction.

La boucle n'est pas une portée indépendante, donc y déclarer la fonction sera déclarée à l'avance, mais pas dans la fonction. jshint empêche les définitions en double.

function a() {
    function b() {
    }
}

b ne sera déclaré que lorsque la fonction a est exécutée, et s'il n'y a pas de référence externe pointant vers b, elle sera détruite après que la fonction exécute le prochain cycle de recyclage.

En fait, il n’y a pas beaucoup de différence.

世界只因有你
function test(message) {
  console.log(message);
}

$('.dom').on('click', function () {
  test('abc')
});

Le test est jeté après utilisation, il ne sera pas irrecyclable.

为情所困

Si vous ne l'exécutez qu'une seule fois, vous pouvez faire ceci :

var elem = $('.dom'); 
elem.on('click', (function() {
    return function foo(e) {
        // do something...
        elem.off('click', foo);
    };
}()));

Le foo défini n'affectera pas le monde extérieur. Désinstallez-le immédiatement après utilisation et attendez le recyclage
Propre et propre, cachant le mérite et la renommée

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal