Heim  >  Artikel  >  Web-Frontend  >  Verhalten sich anonyme Funktionen mit unterschiedlicher Syntax in JavaScript anders, wenn sie mit Modifikatoren kombiniert werden?

Verhalten sich anonyme Funktionen mit unterschiedlicher Syntax in JavaScript anders, wenn sie mit Modifikatoren kombiniert werden?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 15:17:02850Durchsuche

Do Anonymous Functions with Different Syntax Behave Differently in JavaScript When Combined with Modifiers?

Sind anonyme Funktionen mit unterschiedlicher Syntax in JavaScript funktional gleich?

In JavaScript sind sowohl (function() { })() als auch ( function() { }()) scheint möglicherweise dieselbe Aufgabe auszuführen, indem „foo“ und „bar“ nacheinander angezeigt werden. Unter bestimmten Bedingungen gibt es jedoch geringfügige Unterschiede zwischen diesen beiden Syntaxen.

Codeblock 1:

(function() {
    bar = 'bar';
    alert('foo');
})();

alert(bar);

Codeblock 2:

(function() {
    bar = 'bar';
    alert('foo');
}());

alert(bar);

Funktional gleichwertig

In Ermangelung jeglicher Änderungen sind beide Codeblöcke funktional gleichwertig. Sie erstellen eine anonyme Funktion, führen sie sofort aus und greifen dann auf die in der Funktion definierte Balkenvariable zu.

Unterschiede bei Modifikationen

Wenn Sie jedoch einen Modifikator wie z Als neu vor den Funktionsaufrufen oder etwas nach ihnen hinzufügen, ändert sich das Verhalten.

Codeblock 1 mit new und .prop:

new (function() {
    this.prop = 4;
}) ().prop;

Dieser Code erstellt eine neue Instanz der anonymen Funktion und greift auf deren Prop-Eigenschaft zu. Es wird 4 zurückgegeben.

Codeblock 2 mit new und .Class:

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

Im Gegensatz dazu ruft dieser Code new für die Class-Eigenschaft auf. Aufgrund der zusätzlichen Klammern innerhalb der äußeren Klammern ist der Funktionsaufruf nicht Teil des neuen Ausdrucks. Stattdessen ruft es die Funktion normal auf und gibt ihren Rückgabewert zurück, der eine Klasseninstanz ist.

Zusammenfassend lässt sich sagen, dass sowohl (function() { })() als auch (function() { }()) funktional sind Unter normalen Bedingungen gleichwertig, verhalten sie sich anders, wenn sie mit Modifikatoren kombiniert werden, die sich auf ihre Ausführung auswirken.

Das obige ist der detaillierte Inhalt vonVerhalten sich anonyme Funktionen mit unterschiedlicher Syntax in JavaScript anders, wenn sie mit Modifikatoren kombiniert werden?. 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