In javascript, wann würden Sie dies verwenden möchten:
(function(){
//Bunch of code...
})();
darüber:
//Bunch of code...
In javascript, wann würden Sie dies verwenden möchten:
(function(){
//Bunch of code...
})();
darüber:
//Bunch of code...
Angesichts Ihrer einfachen Frage: "Wann würden Sie in Javascript folgendes verwenden wollen:..."
Ich mag die Antworten von @ken_browning und @sean_holding, aber hier ist ein weiterer Anwendungsfall, den ich nicht erwähnt sehe:
let red_tree = new Node(10);
(async function () {
for (let i = 0; i < 1000; i++) {
await red_tree.insert(i);
}
})();
console.log('----->red_tree.printInOrder():', red_tree.printInOrder());
wobei Node.insert eine asynchrone Aktion ist.
Ich kann nicht einfach await ohne das async-Schlüsselwort bei der Deklaration meiner Funktion aufrufen, und ich brauche keine benannte Funktion für die spätere Verwendung, sondern muss diesen Einfügeaufruf abwarten, oder ich brauche einige andere reichere Funktionen (wer weiß?).
(function(){
var foo = {
name: 'bob'
};
console.log(foo.name); // bob
})();
console.log(foo.name); // Reference error
Eigentlich wird die obige Funktion als Funktionsausdruck ohne Namen behandelt.
Der Hauptzweck der Umhüllung einer Funktion mit schließenden und öffnenden Klammern besteht darin, die Verschmutzung des globalen Raums zu vermeiden.
Die Variablen und Funktionen innerhalb des Funktionsausdrucks werden privat (d.h. sie sind außerhalb der Funktion nicht verfügbar).
Da Funktionen in Javascript sind First-Class-Objekt, durch die Definition es so, es effektiv definiert eine "Klasse" ähnlich wie C + + oder C #.
Diese Funktion kann lokale Variablen definieren und Funktionen innerhalb der Funktion haben. Die internen Funktionen (effektiv Instanzmethoden) haben Zugriff auf die lokalen Variablen (effektiv Instanzvariablen), sind aber vom Rest des Skripts isoliert.
Es sieht so aus, als wäre diese Frage bereits beantwortet worden, aber ich werde mich trotzdem dazu äußern.
Ich weiß, wann ich selbstausführende Funktionen verwenden möchte.
var myObject = {
childObject: new function(){
// bunch of code
},
objVar1: <value>,
objVar2: <value>
}
Die Funktion ermöglicht es mir, einige zusätzliche Code zu verwenden, um die childObjects Attribute und Eigenschaften für sauberen Code zu definieren, wie z. B. häufig verwendete Variablen oder mathematische Gleichungen ausführen; Oh! oder Fehlerprüfung. im Gegensatz zu verschachtelten Objekt Instanziierung Syntax der...
object: {
childObject: {
childObject: {<value>, <value>, <value>}
},
objVar1: <value>,
objVar2: <value>
}
Bei der Programmierung im Allgemeinen gibt es viele obskure Möglichkeiten, viele der gleichen Dinge zu tun, so dass man sich fragt: "Wozu die Mühe?" Aber es tauchen immer wieder neue Situationen auf, in denen man sich nicht mehr allein auf die Grund-/Kernprinzipien verlassen kann.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.