Kürzlich stellte ein Kollege eine Frage: Was würde passieren, wenn die Funktion und das Objekt in js denselben Namen hätten? Dieses Problem verdient es, ausführlich besprochen zu werden. Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen zu Funktionen und Objekten mit doppelten Namen in JavaScript vor.
Vorwort
In diesem Artikel werden hauptsächlich relevante Inhalte zu Funktionen und Objekten mit doppelten Namen in JavaScript vorgestellt und als Referenz und Studium bereitgestellt Im Folgenden gibt es nicht viel zu sagen. Werfen wir einen Blick auf die ausführliche Einführung.
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 nicht das Konzept der Überladung. 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, sind die verbleibenden Standardzuweisungen undefiniert; wenn mehr als die tatsächlichen Parameter übergeben werden die formalen Parameter, dann werden alle übergeben, aber es gibt keine entsprechenden formalen Parameter, auf die 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 wie eine Funktion hat, wird die Variable wirksam
Dies beinhaltet das Vorparsen von Variablen und Funktionen:
- Variablendeklarationen werden oben platziert und Funktionsdeklarationen werden ebenfalls oben platziert 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 den gleichen Namen wie die interne Variable
Definieren Sie eine gewöhnliche Funktion , also in der Fenstervariablen Definieren Sie als Nächstes einen Schlüssel, dessen Name der Funktionsname und dessen Wert die Adresse der Funktion ist. 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 */
Zusammenfassung
Das obige ist der detaillierte Inhalt vonBeispiele für Funktionen und Objekte mit doppelten Namen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!