Heim > Web-Frontend > js-Tutorial > Hauptteil

Implementierungsprinzip von Funktionsparametern in js

不言
Freigeben: 2018-07-16 14:58:43
Original
1787 Leute haben es durchsucht

Die Implementierung formaler Parameter und tatsächlicher Parameter von Funktionen in js ist unterschiedlich. Bei der Übergabe von Parametern stimmen die tatsächlichen Parameter möglicherweise nicht mit den formalen Parametern überein. Hier müssen wir die Implementierungsprinzipien von Parametern in js untersuchen.

Wir alle wissen, dass die in JS übergebenen Parameter unterschiedlich sein können. Wir haben zum Beispiel eine Funktion:

<script type="text/javascript">
    function one(a,b,c) {        
    this.x = a;
        console.log(a);
    }
    one(1);</script>
Nach dem Login kopieren

Die Zahl, die wir übergeben, ist nur eine 1, aber es gibt drei ABC formale Parameter. Das ist offensichtlich nicht richtig, oder?

Wenn wir uns zu diesem Zeitpunkt b und c ansehen, wird undefiniert angezeigt. ps: Zum Beispiel console.log(b).

Natürlich existierten diese beiden Nummern nicht. Wie kann ich es für Sie finden?

Wie implementiert JS diese Situation, wenn die tatsächlichen Parameter und formalen Parameter nicht übereinstimmen? Schauen wir uns einen Code an:

<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>JavaScript中函数的形参和实参的区别</title></head><body>
    <script type="text/javascript">
    function one(a,b,c) {        
    return one.length;
    }    function two(a,b,c,d,e,f,g){        
    return arguments.length;
    }
    console.log(one()); //3    
    console.log(two()); //0
    </script></body></html>
Nach dem Login kopieren

Hier geben wir one.length in der One-Funktion und arguments.length in der Two-Funktion zurück. Sie haben vielleicht herausgefunden, dass die Ausgabe one() one.length zurückgibt, was die Anzahl der formalen Parameter ist, und argument.length die Anzahl der tatsächlichen Parameter.


Haben Sie es sofort verstanden?

Sogar wir können Argumente[0] verwenden, um die Nummer des tatsächlichen Parameters zu erhalten.

Aber warum können Zahlen ohne formale Parameter arrayartig dargestellt werden? Nun, ich weiß, dass Sie eine Jungfrau sind und in allem Symmetrie verlangen. Sofern Ihr formaler Parameter kein Array ist, können Sie ihn auf diese Weise verwenden. Andernfalls können wir in der Funktion nur den Namen des formalen Parameters verwenden, um die tatsächlichen Parameter zu erhalten.

In C# und Java sind die Anforderungen an Parametertyp und -anzahl im Vergleich zu JS sehr streng. Wenn sie überhaupt nicht übereinstimmen, wird ein Fehler gemeldet. Und JS kann aufgrund dieses Designs zu einer relativ flexiblen Sprache werden.

Die obige Methode ist eine Implementierung, auf die sich JS verlässt, ohne die Gleichheit der Anzahl formaler Parameter und tatsächlicher Parameter zu erzwingen. Was den gleichen Typ betrifft, kann jeder Typ in JS als var a =... geschrieben werden. Was nützen Typen? Deshalb gilt JS als schwach typisierte Sprache!

Verwandte Empfehlungen:

Verständnis der tatsächlichen Parameter, formalen Parameter und Abschlüsse von js-Funktionen

Analyse der Funktionsdeklaration und des Funktionsausdrucks von js

Das obige ist der detaillierte Inhalt vonImplementierungsprinzip von Funktionsparametern in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!