Heim  >  Artikel  >  Web-Frontend  >  Funktions- und Objektparsing mit doppelten Namen in JavaScript

Funktions- und Objektparsing mit doppelten Namen in JavaScript

小云云
小云云Original
2018-02-01 09:14:001500Durchsuche

Was passiert, wenn Funktion und Objekt in js denselben Namen haben? Dieses Problem verdient es, im Detail besprochen zu werden. In diesem Artikel werden Ihnen hauptsächlich relevante Informationen zu Funktionen und Objekten mit doppelten Namen vorgestellt. Ich hoffe, dass dies allen helfen kann.

JavaScript ermöglicht die wiederholte Deklaration von Variablen, und die spätere Deklaration überschreibt die vorherige.

var a = 1;
var a = 'x';
console.log(a);
//输出'x'

JavaScript ermöglicht die wiederholte Definition von Funktionen.

JavaScript kennt das Konzept der Überladung nicht. Es unterscheidet Funktionen nur anhand ihrer Namen. Die nach

definierte gleichnamige Funktion überschreibt unabhängig von den Parametern die vorherige.

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"

Wenn die Anzahl der tatsächlichen Parameter kleiner ist als die formalen Parameter, dann sind die verbleibenden Standardzuweisungen undefiniert; wenn die Anzahl der übergebenen tatsächlichen Parameter größer ist als die Anzahl der formalen Parameter, dann Alle werden übergeben, aber es gibt keinen entsprechenden formalen Parameter, auf den verwiesen werden kann (Sie können jedoch Argumente verwenden, um die verbleibenden Parameter abzurufen)

function test(arg1) {
 for(var i=0; i<arguments.length; i++) {
 console.log(arguments[i]);
 }
}
test(1,2); //输出 1 2

Wenn eine Variable denselben Namen hat als Funktion wird die Variable wirksam

Dies beinhaltet das Vorparsen von Variablen und Funktionen:

- Variablendeklarationen werden oben platziert, und Funktionsdeklarationen werden ebenfalls darauf platziert top und vor Variablen deklariert.

- Wenn die Deklaration einer Variablen und die Zuweisungsanweisung zusammen geschrieben werden, teilt die JS-Engine sie in zwei Teile auf: Deklaration und Zuweisung. Die Deklaration wird oben platziert und die Zuweisung bleiben an der ursprünglichen Position.

- Deklarierte Variablen werden nicht erneut deklariert.

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
*/

Es gibt zwei Arten von Funktionen in JS, eine ist eine normale Funktion und die andere ist ein Funktionsobjekt. Das Folgende ist ein „Funktionsobjekt“, das tatsächlich eine anonyme Funktion deklariert und dann der Variablen die Init-Methode der Funktion zuweist.

var a = 100;
var a = function() {
 return "function";
}
console.log(a);
/* 
输出
function() {
 return "function";
}
*/
console.log(a()); //输出 "function"

Die Funktion hat denselben Namen wie die interne Variable

Definieren Sie eine gewöhnliche Funktion, dh definieren Sie einen Schlüssel unter der Fenstervariablen, sein Name ist der Funktionsname und sein value ist die Adresse der Funktion. Dies innerhalb der Funktion zeigt auf das Fensterobjekt.

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
*/

Verwandte Empfehlungen:

Informationen zur Lösung des Problems des Aufrufs von js-Methoden mit doppelten Namen

Das obige ist der detaillierte Inhalt vonFunktions- und Objektparsing mit doppelten Namen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn