Articles of closures

La fonction de rappel ajax peut-elle voir les variables de la fonction parent?

function validateHistoryId(input) { $.getJSON('request.php', {"action": "historyExists", "history_id" : input.value}, function(data) { console.log(input.value); } ); } J'utilise jquery ajax call depuis la fonction javascript. J'ai essayé le code ci-dessus et ça marche, mais je ne sais pas si cela causera des problèmes dans le futur. Je veux savoir, la fonction ajax callback peut-elle voir les variables […]

Javascript: setTimeout Fermeture à l'intérieur imbriqué (double) pour les boucles

Bonjour, j'essaie de recréer ce que http://austintexas.wayblazer.com/locations/austin-tx fait pour sa boîte de texte de recherche – affichant un caractère typé et tournant entre plusieurs phrases. Ma logique initiale est de lire les phrases à partir d'un tableau comme tel: [abc,123,XYZ] , puis d'utiliser une split et pour forEach pour séparer la chaîne en caractères et […]

Suppression des auditeurs d'événements avec des appels de fonctions anonymes en JavaScript

J'essaie de supprimer un auditeur d'événements pour les éléments de portée créés où la fonction appelée se trouve dans une fermeture. J'ai essayé diverses méthodes et aucun ne semble fonctionner. var MyClass = function () {} MyClass.prototype.addSpan = function (el) { var span = document.createElement('span'); span.innerHTML = "Text here"; el.appendChild(span); span.addEventListener('click', (function (obj) { return […]

Surmontant une fonction définie dans la fermeture de jquery

J'ai une fonction définie dans la fermeture de jquery et appelée par une autre fonction dans la même fermeture. Puis-je remplacer la fonction appelée sans changer la fermeture elle-même. Voir le code par exemple (function($){ function Myfunction(value) { //do something with the value } $('a').live('click',function(){ MyFunction($(this).val()) }); }(JQuery)); Est-ce qu'il y a un moyen de […]

Variables de portée auto-liaisons dans une fermeture

Considérez ce code javascript (plutôt inutile): function make_closure() { var x = 123, y = 456; return function(varname) { return eval(varname) } } closure = make_closure() closure("x") // 123 closure("y") // 456 La fonction renvoyée par make_closure ne contient aucune référence aux variables de portée, mais elle est toujours capable de renvoyer ses valeurs lorsqu'elles […]

JavaScript: Manipulateurs d'événements: Où déclarer les variables – locales ou de fermeture (contre frais généraux)?

Je me trouve en train d'écrire diverses fonctions qui contiennent des gestionnaires d'événements. Il est préférable de déclarer les variables requises par les fonctions du gestionnaire à la racine de la fonction parent (fermeture), en particulier si elles sont des sélections jQuery, des constantes requises par plus d'un gestionnaire, ou des pré-calculs nécessaires que je […]

Etat de sauvegarde en boucle pour fermeture

Pardonnez-moi si cela pourrait être un peu une question de noobie, mais cela devrait fonctionner, n'est-ce pas? var elems = [1,2,3,4,5] for (var i = 0; i <elems.length; i++) { return (function(e){ console.log(e) })(i); } En d'autres termes, il devrait cracher >>node file.js 1 2 3 4 5 Pour une raison quelconque, cela ne fait […]

Que signifie la liaison d'événement?

Que signifie la liaison d'événement? Je rencontre toujours ce mot chaque fois que je recherche sur Internet et tout ce que j'essaie de chercher la signification, il est encore vague pour moi @ _ @ Il y a quelque temps, en lisant certains blogs concernant JavaScript, je vois des gens qui utilisent ce mot sacré […]

Où sont les variables dans une fermeture stockée – pile ou tas?

Comme les codes suivants: var foo = function() { var a = 1; // closure var return function() { // closure fun console.log(a); } }; var bar = foo(); Lorsque foo sort (ou dit, retourne), nous savons que la variable a ne sera pas détruite et reste en mémoire (c'est pourquoi la fermeture fonctionne). Donc, […]

Empêcher la fermeture de JavaScript de la portée héréditaire

Je cherche une manière chic pour empêcher une fermeture d'hériter des scrope environnants. Par exemple: let foo = function(t){ let x = 'y'; t.bar = function(){ console.log(x); // => 'y' }); }; Il n'y a que deux façons dont je sais empêcher la portée du partage: (1) Utilisez des variables d'ombre: let foo = function(t){ […]