Verstehen der Semantik von ES6-Funktionen auf Blockebene
Einführung
Mit der Einführung von ES6, block Funktionsdeklarationen auf -Ebene wurden zu einer wertvollen Ergänzung der Sprache. Trotz anfänglicher Annahmen umfasst die genaue Semantik dieser Funktionen ein breiteres Spektrum, einschließlich der Unterscheidung zwischen strengen und nicht strengen Modi und Überlegungen zur Browserkompatibilität.
Semantik
Die folgende Tabelle fasst die zusammen Schlüsselaspekte der Funktionssemantik auf Blockebene:
Ausführung Umgebung | Sichtbarer Außenblock | An die Spitze des Blocks gehoben | TDZ |
---|---|---|---|
Nicht streng, keine Web-Erweiterungen | Ja, gefällt mir var | Ja | Keine |
Streng, keine Weberweiterungen | Nein | Ja | Keine |
Nicht streng, Web Erweiterungen | Ja, wie var | Ja | Keine |
Streng, Web-Erweiterungen | Nein | Ja, zweimal (Funktion und Block) | Funktionsbezogene Bindung ist zuvor undefiniert Deklaration |
Auswirkungen auf den strengen Modus
Das Konzept des „strengen Modus“ bezieht sich in diesem Zusammenhang auf den internen Slot [[Strikt]] des Funktionsobjekt, nicht die Strenge der Funktion selbst. Daher gilt der Codeausschnitt, der eine Funktionsdeklaration mit „use strict“ innerhalb eines nicht strikten umgebenden Codes enthält, immer noch als „non strict“.
Web Extensions
Das „web „Erweiterungen“ gelten nur für nicht strengen (schlampigen) Code mit „vernünftigen“ Funktionsanweisungen. Im schlampigen Modus mit Webkompatibilitätssemantik wird eine Funktionsdeklaration innerhalb eines Blocks wie folgt behandelt:
Im Wesentlichen führt dieses Verhalten zu zwei separaten Bindungen mit demselben Namen, eine mit Blockbereich und die andere mit Funktionsbereich.
Fazit
Während Funktionen auf Blockebene in ES6 erweiterte Funktionalität bieten, ist das Verständnis ihrer genauen Semantik, einschließlich des Zusammenspiels zwischen strengen Modi und Webkompatibilität, von entscheidender Bedeutung, um eine ordnungsgemäße Verwendung sicherzustellen und Potenziale zu vermeiden Fallstricke.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3