Maison  >  Article  >  interface Web  >  Explication détaillée des fonctions et des instances d'objets avec des noms en double en JavaScript

Explication détaillée des fonctions et des instances d'objets avec des noms en double en JavaScript

小云云
小云云original
2018-01-29 17:50:501340parcourir

Cet article vous présente principalement le contenu pertinent sur les fonctions et les objets avec des noms en double en JavaScript. Il est partagé pour votre référence et votre étude. J'espère qu'il 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 tant que 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 :

Explication détaillée de jQuery et Ajax pour implémenter des noms d'utilisateur en double

À propos de la façon de résoudre js Le problème de l'appel séquentiel de méthodes avec des noms en double

Examen de la méthode d'initialisation à partir des noms en double des fonctions JavaScript_javascript skills

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!

Déclaration:
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