Heim Web-Frontend js-Tutorial JavaScript-Funktionsausdrücke (grafisches Tutorial)

JavaScript-Funktionsausdrücke (grafisches Tutorial)

May 19, 2018 am 10:52 AM
javascript js 表达式

In diesem Artikel werden hauptsächlich detaillierte Erklärungen und Beispiele für JavaScript-Funktionsausdrücke vorgestellt.

JavaScript-Funktionsausdrücke

1

Es gibt zwei Möglichkeiten, eine Funktion zu definieren: eine ist eine Funktionsdeklaration und die andere ist ein Funktionsausdruck

1.1 Funktionsdeklaration

function functionName(arg){
   //函数体
}
Nach dem Login kopieren

Bei der Funktionsdeklaration ist eine wichtige Funktion die Funktionsdeklarationsförderung, was bedeutet, dass die Funktionsdeklaration vor der Ausführung des Codes gelesen wird. Dies bedeutet, dass die Funktion nach der Anweisung platziert werden kann, die sie aufruft. Wie unten gezeigt:

helloworld(); //在代码执行之前会先读取函数声明
function helloworld(){
  console.log("hello world");
}
Nach dem Login kopieren

1.2 Funktionsausdruck

var functionName=function(arg){
   //函数体
}
Nach dem Login kopieren

Diese Form sieht so aus sieht aus wie eine reguläre Variablenzuweisungsanweisung, bei der eine Funktion erstellt und der Variablen Funktionsname zugewiesen wird. Die in diesem Fall erstellte Funktion wird als anonyme Funktion bezeichnet. Weil nach dem Funktionsschlüsselwort kein Bezeichner steht.

Funktionsausdrücken muss wie anderen Ausdrücken vor der Verwendung ein Wert zugewiesen werden; der folgende Code führt zu einem Fehler

helloworld(); //错误,还未赋值,函数不存在

var helloworld=function(){
  console.log("hello world");
}
Nach dem Login kopieren

Ja Mit Dem Funktionsausdruck können wir dem Funktionsausdruck dynamisch Werte zuweisen, wie im folgenden Code gezeigt:

var helloworld; //声明
if(condition){ //条件
  helloworld=function(){ //赋值
    console.log("hello world"); 
  }
}
else{
  helloworld=function(){ //赋值
    console.log("你好,世界");
  }
}
Nach dem Login kopieren

2. Rekursive Funktion

Eine rekursive Funktion wird gebildet, wenn eine Funktion sich selbst über ihren Namen aufruft (dasselbe wie C# und andere Sprachen, daher ist die Kernidee des Programms ähnlich, es gibt jedoch einige Unterschiede in der Syntax. Lernen Wenn Sie die Grundlagen einer Sprache gut beherrschen und andere viel einfacher lernen, nehmen wir eine klassische Rekursionsinterviewfrage. Die Regeln für eine Zahlenspalte lauten wie folgt: 1, 1, 2, 3, 5, 8, 13, 21, 34... Finden Sie die 30. Ziffer und verwenden Sie die Rekursionsalgorithmus-Implementierung. Der Code lautet wie folgt:

   function foo(n) {
      if (n <= 0)
        return 0;
      else if (n > 0 && n <= 2)
        return 1;
      else
        return foo(n - 1) + foo(n - 2);
    }
Nach dem Login kopieren

Obwohl diese Funktion kein Problem zu haben scheint, Folgendes Code kann dazu führen, dass es schief geht:

   var foo1 = foo;
    foo = null;
    console.log(foo1(34));
Nach dem Login kopieren

Der obige Code speichert zuerst die foo()-Funktion in der Variablen foo1 und setzt dann die foo-Variable auf null Dadurch gibt es nur einen Verweis auf die ursprüngliche Funktion. Wenn jedoch foo1() als nächstes aufgerufen wird, tritt in diesem Fall ein Fehler auf, da foo() ausgeführt werden muss und foo bereits null ist. Die Verwendung von arguments.callee kann dieses Problem lösen. arguments.callee ist ein Zeiger auf die ausgeführte Funktion, sodass Sie damit rekursive Aufrufe der Funktion implementieren können

 function foo(n) {
      if (n <= 0)
        return 0;
      else if (n > 0 && n <= 2)
        return 1;
      else
        return arguments.callee(n - 1) + arguments.callee(n - 2);
    }
Nach dem Login kopieren

Sie können auch benannte Funktionsausdrücke verwenden um das gleiche Ergebnis zu erzielen. Zum Beispiel:

 var foo = (function f(n) {
      if (n <= 0)
        return 0;
      else if (n > 0 && n <= 2)
        return 1;
      else
        return f(n - 1) + f(n - 2);
    });
Nach dem Login kopieren

3. Schließung

3.1 Schließung bedeutet das Recht, auf einen anderen Funktionsumfang zuzugreifen. Ein üblicher Weg Einen Abschluss zu erstellen bedeutet, eine Funktion innerhalb einer Funktion zu erstellen. Um Abschlüsse zu verstehen, müssen Sie zunächst den Umfang der speziellen JavaScript-Variablen verstehen. Der Umfang von Variablen besteht aus nichts anderem als zwei Typen, globalen Variablen und lokalen Variablen, um ihn intuitiv auszudrücken:

 var n = 100; //定义一个全局变量
    function fn() {
      console.log(n); //函数内部直接读取全局变量
    }

    fn();
Nach dem Login kopieren

Lokale Variablen können nicht direkt außerhalb der Funktion gelesen werden:

    function fn() {
      var n = 100;
    }

    console.log(n); //n is not defined
Nach dem Login kopieren

Eine Sache, die hier zu beachten ist, ist, dass es wird innerhalb der Funktion deklariert. Achten Sie bei der Verwendung von Variablen darauf, var zu verwenden. Wenn sie nicht verwendet wird, wird sie zu einer globalen Variablen:

 function fn() {
       n = 100;
    }
    fn();
    console.log(n); //100
Nach dem Login kopieren

Manchmal brauchen wir um die innerhalb der Funktion deklarierten Variablen abzurufen. Sie können also die oben erwähnte übliche Methode zum Erstellen von Abschlüssen verwenden, um eine weitere Funktion innerhalb der Funktion zu erstellen:

   function fn() {
      n = 100;

      function fn1() {
        console.log(n);
      }

      fn1();
    }
    fn(); //100
Nach dem Login kopieren

Im Im obigen Code ist die Funktion fn1 in der Funktion fn enthalten. Alle lokalen Variablen in fm sind für fn1 sichtbar. Aber das Gegenteil funktioniert nicht. Die lokalen Variablen in fn1 sind für fn unsichtbar. Dies ist die einzigartige „Kettenbereich“-Struktur der Javascript-Sprache. Das untergeordnete Objekt sucht Ebene für Ebene nach den Variablen aller übergeordneten Objekte. Daher sind alle Variablen des übergeordneten Objekts für das untergeordnete Objekt sichtbar, umgekehrt jedoch nicht.

Es stellt sich heraus, dass fn1 die internen Variablen von fn lesen kann. Solange also fn1 als Rückgabewert verwendet wird, können wir die Variablen von fn extern lesen

function fn() {
      n = 100;

      function fn1() {
        console.log(n);
      }

      return fn1;
    }
    
    var result=fn();
    result(); //100
Nach dem Login kopieren

Hier ist fn1 ein Abschluss, und ein Abschluss ist eine Funktion, die die internen Variablen anderer Funktionen lesen kann. Da in der Javascript-Sprache nur Unterfunktionen innerhalb der Funktion lokale Variablen lesen können, können Abschlüsse einfach als „innerhalb einer Funktion definierte Funktionen“ verstanden werden. Im Wesentlichen ist der Abschluss also eine Brücke, die das Innere der Funktion mit der Außenseite der Funktion verbindet.

3.2 Der Zweck des Abschlusses

Es hat zwei Hauptzwecke: Der eine besteht darin, die Variablen innerhalb der Funktion zu lesen, und der andere besteht darin, die Werte dieser Variablen beizubehalten in Erinnerung. Wie im folgenden Code gezeigt:

function fn() {
      n = 100;

      nadd = function () {
        n += 1;
      }

      function fn1() {
        console.log(n);
      }

      return fn1;
    }

    var result = fn();
    result(); //100
    nadd();
    result(); //101
Nach dem Login kopieren

注意:由于闭包函数会携带包含它的函数的作用域,因此会比其他函数占用更多的内存,过度使用闭包可能会导致内存占用过多,所以在退出函数之前,将不使用的局部变量全部删除。

四、块级作用域

块级作用域(又称为私有作用域)的匿名函数的语法如下所示:

(function(){
   //块级作用域
})();
Nach dem Login kopieren

无论在什么地方,只要临时需要一些变量,就可以使用私有作用域,比如:

(function () {
      var now = new Date();
      if (now.getMonth() == 0 && now.getDate() == 1) {
        alert("新年快乐");
      }
    })();
Nach dem Login kopieren

把上面这段代码放到全局作用域中,如果到了1月1日就会弹出“新年快乐”的祝福;这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。一般来说,我们都应该尽量少向全局作用域中添加变量和函数。在一个由很多开发人员共同参与的大型应用程序中,过多的全局变量和函数很容易导致命名冲突。而通过创建私用作用域,每个开发人员既可以使用自己的变量,又不必担心搞乱全局作用域。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

关于如何优化你的JS代码(图文教程)

畅谈HTML+CSS+JS(详细讲解)

原生JS+AJAX做出三级联动效果(附代码)

Das obige ist der detaillierte Inhalt vonJavaScript-Funktionsausdrücke (grafisches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Dec 17, 2023 pm 06:55 PM

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen in PHP und JS. Mit der rasanten Entwicklung des Internets und der Technologie ist der Aktienhandel für viele Anleger zu einer wichtigen Möglichkeit geworden. Die Aktienanalyse ist ein wichtiger Teil der Anlegerentscheidung, und Kerzendiagramme werden häufig in der technischen Analyse verwendet. Wenn Sie lernen, wie man Kerzendiagramme mit PHP und JS zeichnet, erhalten Anleger intuitivere Informationen, die ihnen helfen, bessere Entscheidungen zu treffen. Ein Candlestick-Chart ist ein technischer Chart, der Aktienkurse in Form von Candlesticks anzeigt. Es zeigt den Aktienkurs

Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Apr 03, 2024 am 11:55 AM

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen Dec 18, 2023 pm 03:39 PM

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

See all articles