Que se passera-t-il si la fonction et l'objet ont le même nom en js ? Ce problème mérite d'être discuté en détail. Cet article vous présente principalement les informations pertinentes sur les fonctions et les objets avec des noms en double en JavaScript. Les amis dans le besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.
JavaScript permet des déclarations répétées de variables, et la déclaration ultérieure écrase la précédente.
var a = 1; var a = 'x'; console.log(a); //输出'x'
JavaScript permet une définition répétée des fonctions.
JavaScript n'a pas de concept de surcharge. Il distingue uniquement les fonctions en fonction de leurs noms. La fonction du même nom définie après
écrase la précédente, quels que soient les paramètres.
function test() { console.log("test"); } test(); //输出 "test arg0 + undefined" function test(arg1) { console.log("test arg" + arguments.length + " + " + arg1); } test(1,2); //输出 "test arg2 + 1"
Si le nombre de paramètres réels est inférieur aux paramètres formels, alors les affectations par défaut restantes ne sont pas définies ; si le nombre de paramètres réels transmis est supérieur au nombre de paramètres formels, alors ; ils seront tous transmis, mais il n'y a pas de paramètre formel correspondant qui puisse être référencé (mais vous pouvez utiliser des arguments pour obtenir les paramètres restants)
function test(arg1) { for(var i=0; i<arguments.length; i++) { console.log(arguments[i]); } } test(1,2); //输出 1 2
Quand une variable a le même nom en fonction, la variable prend effet
Cela implique une pré-analyse des variables et des fonctions :
- Les déclarations de variables seront placées en haut, et les déclarations de fonctions seront également placées dessus top et déclaré avant les variables.
- Lorsque la déclaration d'une variable et l'instruction d'affectation sont écrites ensemble, le moteur JS la divisera en deux parties : déclaration et affectation. La déclaration sera placée en haut et l'affectation sera. rester à la position initiale.
- Les variables déclarées ne seront plus déclarées.
var a = 100; function a() { return "function"; } console.log(a); //输出 100 console.log(a()); /* 报错 Uncaught TypeError: a is not a function (anonymous function) @test.html:9 */
Il existe deux types de fonctions dans JS, l'une est une fonction normale et l'autre est un objet fonction. Ce qui suit est un "objet fonction", qui déclare en fait une fonction anonyme puis attribue la méthode init de la fonction à la variable.
var a = 100; var a = function() { return "function"; } console.log(a); /* 输出 function() { return "function"; } */ console.log(a()); //输出 "function"
La fonction a le même nom que la variable interne
Définir une fonction ordinaire, c'est-à-dire définir une clé sous la variable fenêtre, son nom est le nom de la fonction, et son value est l’adresse de la fonction. Ceci à l’intérieur de la fonction pointe vers l’objet window.
function a() { console.log(this); //输出 window{...} this.a = 1; //即 window.a = 1,此时window下的function a已经被该变量覆盖了。 var a = 5; //下面的这几个变量都是局部变量,仅在花括号范围内有效。 a = 10; var v = "value" return "function"; } console.log(a); //输出 function a {...} console.log(a()); //输出 "function" console.log(a); //输出 1 console.log(v); /* 输出 Uncaught ReferenceError: v is not defined (anonymous function) @ mycolor.html:15 */
Recommandations associées :
À propos de la façon de résoudre le problème de l'appel de méthodes js avec des noms en double
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!