Question

Comment les navigateurs gèrent plusieurs déclarations de fonction avec le même nom?

Cas de test spécifique est ci-dessous - Remarque: Je sais que cela n'a aucun sens pour permettre à un script de serveur de créer plusieurs déclarations de fonctions avec le même nom, mais je suis curieux, veuillez donc la réaliser avant de répondre.Ceci est purement pour la recherche comportementale.

Notre CMS crée une instance multiple d'un seul "widget" composé d'un

<div class="targetMeWithThis"></div>

et a

function startWidgetFunction() {
var param1 = $server.Variable1
var param2 = $server.Variable2
var param3 = $server.Variable3
}

Lorsque le serveur rend une page à plusieurs instances de ce widget, comment le navigateur décide-t-il quelle fonction JavaScript est utilisée?Y a-t-il des navigateurs qui créent des objets distincts (fonctions) pour chacun?

merci, j

Était-ce utile?

La solution

en JavaScript, (presque) tout est un objet, y compris des fonctions.Cela étant dit, écraser une définition de fonction fonctionne exactement la même chose que d'écraser une variable.

var myFunc = function () {
    alert('1');   
};

myFunc(); // alerts '1'

var myFunc = function () {
    alert('2');  
};

myFunc(); // alerts '2'

http://jsfiddle.net/kgkgf/3/

Notez que déclarer une variable déjà déclarée n'est pas une bonne pratique et de nombreux outils de qualité de code (JSLINT, JSHINT, etc.) vous enverront à ce sujet.

Autres conseils

Dans ce cas particulier:

function = startWidgetFunction() {
var param1 = $server.Variable1
var param2 = $server.Variable2
var param3 = $server.Variable3
}

Le navigateur lancera une erreur car function est un mot clé réservé.

Compte tenu d'un nom de variable différent, vous venez d'attribuer une valeur à une variable (globale).La variable sera écrasée par une nouvelle fonction (identique) avec chaque exécution successive du script widget.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top