Maison > interface Web > js tutoriel > Analyse de fonctions et d'objets avec des noms en double en JavaScript

Analyse de fonctions et d'objets avec des noms en double en JavaScript

小云云
Libérer: 2018-02-01 09:14:00
original
1571 Les gens l'ont consulté

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'
Copier après la connexion

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"
Copier après la connexion

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
Copier après la connexion

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
*/
Copier après la connexion

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"
Copier après la connexion

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
*/
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal