suchen
HeimWeb-FrontendFront-End-Fragen und AntwortenWas sind die Unterschiede zwischen dem strikten Javascript-Modus?

Unterschiede: 1. Die Verwendung der with-Anweisung ist verboten. 2. Das Schlüsselwort this darf nicht auf das globale Objekt verweisen. 3. Es ist verboten, den Aufrufstapel innerhalb der Funktion zu durchlaufen. 4. Objekte dürfen keine Attribute mit haben 5. Die Zuweisung von Argumenten ist nicht zulässig. 7. Funktionen dürfen nicht in Nicht-Funktionscodeblöcken deklariert werden.

Was sind die Unterschiede zwischen dem strikten Javascript-Modus?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

Unterschiede im strikten JavaScript-Modus

Der strikte Modus hat einige Änderungen an der Syntax und dem Verhalten von Javascript vorgenommen.

1 Explizite Deklaration globaler Variablen

Wenn einer Variablen im Normalmodus ein Wert zugewiesen wird, ohne deklariert zu werden, wird sie standardmäßig auf eine globale Variable gesetzt. Der strikte Modus verbietet diese Verwendung und globale Variablen müssen explizit deklariert werden.

"use strict";
  v = 1; // 报错,v未声明
  for(i = 0; i < 2; i++) { // 报错,i未声明
  }

Daher müssen Variablen im strikten Modus vor der Verwendung mit dem Befehl var deklariert werden.

2 Statische Bindung

Ein Merkmal der Javascript-Sprache ist, dass sie eine „dynamische Bindung“ ermöglicht, d. h., zu welchem ​​Objekt bestimmte Eigenschaften und Methoden gehören, wird nicht zur Kompilierzeit, sondern zur Laufzeit (Laufzeit) bestimmt. bestimmt.

Der strenge Modus erlegt der dynamischen Bindung einige Einschränkungen auf. In einigen Fällen ist nur statische Bindung zulässig. Mit anderen Worten: Zu welchem ​​Objekt die Eigenschaften und Methoden gehören, wird während der Kompilierungsphase bestimmt. Dies trägt dazu bei, die Kompilierungseffizienz zu verbessern, den Code leichter lesbar zu machen und weniger Überraschungen zu verursachen.

Konkret geht es dabei um die folgenden Aspekte.

(1) Die Verwendung der with-Anweisung

ist verboten, da die with-Anweisung zur Kompilierungszeit nicht bestimmen kann, zu welchem ​​Objekt das Attribut gehört.

  "use strict";
  var v  = 1;
  with (o){ // 语法错误
    v = 2;
  }

(2) Auswertungsbereich erstellen

Im normalen Modus verfügt die Javascript-Sprache über zwei Variablenbereiche: den globalen Bereich und den Funktionsbereich. Der strikte Modus erstellt einen dritten Bereich: den Auswertungsbereich.

Im normalen Modus hängt der Umfang der Eval-Anweisung davon ab, ob sie sich im globalen Bereich oder im Funktionsbereich befindet. Im strikten Modus ist die eval-Anweisung selbst ein Bereich und kann keine globalen Variablen mehr generieren. Die von ihr generierten Variablen können nur innerhalb von eval verwendet werden.

  "use strict";
  var x = 2;
  console.info(eval("var x = 5; x")); // 5
  console.info(x); // 2

3 Erweiterte Sicherheitsmaßnahmen

(1) Verhindern, dass dieses Schlüsselwort auf das globale Objekt verweist

  function f(){
    return !this;
  }
  // 返回false,因为"this"指向全局对象,"!this"就是false
  function f(){  
    "use strict";
    return !this;
  }
  // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

Wenn Sie also bei Verwendung des Konstruktors vergessen, new hinzuzufügen, zeigt dies nicht mehr darauf das globale Objekt, aber es ist ein Fehler.

  function f(){
    "use strict";
    this.a = 1;
  };
  f();// 报错,this未定义

(2) Es ist verboten, den Aufrufstapel innerhalb der Funktion zu durchlaufen

  function f1(){
    "use strict";
    f1.caller;    // 报错
    f1.arguments; // 报错
  }
  f1();

4 Es ist verboten, Variablen zu löschen

Variablen können im strikten Modus nicht gelöscht werden. Es können nur Objekteigenschaften gelöscht werden, deren konfigurierbare Eigenschaft auf „true“ gesetzt ist.

  "use strict";
  var x;
  delete x; // 语法错误
  var o = Object.create(null, {&#39;x&#39;: {
      value: 1,
      configurable: true
  }});
  delete o.x; // 删除成功

5 Explizite Fehlerberichterstattung

Im normalen Modus wird beim Zuweisen eines Werts zu einer schreibgeschützten Eigenschaft eines Objekts kein Fehler gemeldet, sondern es schlägt stillschweigend fehl. Im strikten Modus wird ein Fehler gemeldet.

  "use strict";

  var o = {};
  Object.defineProperty(o, "v", { value: 1, writable: false });
  o.v = 2; // 报错

Im strikten Modus wird ein Fehler gemeldet, wenn einer mit der Getter-Methode gelesenen Eigenschaft ein Wert zugewiesen wird.

  "use strict";

  var o = {
   
    get v() { return 1; }
  };
  o.v = 2; // 报错

Im strikten Modus führt das Hinzufügen neuer Attribute zu Objekten, deren Erweiterung verboten ist, zu einem Fehler.

  "use strict";
  var o = {};
  Object.preventExtensions(o);
  o.v = 1; // 报错

Wenn Sie im strikten Modus ein Attribut löschen, das nicht gelöscht werden kann, wird ein Fehler gemeldet.

  "use strict";
  delete Object.prototype; // 报错

6 Fehler bei doppeltem Namen

Der strikte Modus hat einige neue Syntaxfehler hinzugefügt.

(1) Objekte können keine Attribute mit doppelten Namen haben

Wenn ein Objekt im normalen Modus mehrere Attribute mit doppelten Namen hat, überschreibt das zuletzt zugewiesene Attribut den vorherigen Wert. Im strikten Modus handelt es sich um einen Syntaxfehler.

  "use strict";
  var o = {
    p: 1,
    p: 2
  }; // 语法错误

(2) Die Funktion darf keine Parameter mit demselben Namen haben

Wenn die Funktion im normalen Modus mehrere Parameter mit demselben Namen hat, können Sie diese mit arguments[i] lesen. Im strikten Modus handelt es sich um einen Syntaxfehler.

  "use strict";
  function f(a, a, b) { // 语法错误
    return ;
  }

7 Verbotene Oktaldarstellung

Wenn im Normalmodus die erste Ziffer einer Ganzzahl 0 ist, bedeutet dies, dass es sich um eine Oktalzahl handelt. Beispielsweise entspricht 0100 der Dezimalzahl 64. Der strikte Modus verbietet diese Darstellung, das erste Bit der Ganzzahl ist 0 und es wird ein Fehler gemeldet.

  "use strict";
  var n = 0100; // 语法错误

8 Einschränkungen des Argumentobjekts

arguments ist das Parameterobjekt der Funktion, und der strikte Modus schränkt seine Verwendung ein.

(1) Die Zuweisung zu Argumenten ist nicht zulässig anonym sein Die Funktion ruft sich intern auf.

  "use strict";
  arguments++; // 语法错误
  var obj = { set p(arguments) { } };  // 语法错误
  try { } catch (arguments) { }  // 语法错误
  function arguments() { }  // 语法错误
  var f = new Function("arguments", "&#39;use strict&#39;; return 17;");  // 语法错误

9 Funktionen müssen auf der obersten Ebene deklariert werden

In Zukunft werden neue Versionen von Javascript einen „Block-Level-Bereich“ einführen. Um mit der neuen Version Schritt zu halten, erlaubt der strikte Modus nur die Deklaration von Funktionen im globalen Bereich oder auf der obersten Ebene des Funktionsbereichs. Das heißt, es ist nicht erlaubt, Funktionen innerhalb eines Nicht-Funktionscodeblocks zu deklarieren.

  "use strict";
  if (true) {
    function f() { } // 语法错误
  }
  for (var i = 0; i < 5; i++) {
    function f2() { } // 语法错误
  }

【相关推荐:javascript学习教程

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen dem strikten Javascript-Modus?. 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
React: Die Kraft einer JavaScript -Bibliothek für die WebentwicklungReact: Die Kraft einer JavaScript -Bibliothek für die WebentwicklungApr 18, 2025 am 12:25 AM

React ist eine von Meta entwickelte JavaScript -Bibliothek zum Erstellen von Benutzeroberflächen, wobei der Kern die Komponentenentwicklung und die virtuelle Dom -Technologie ist. 1. Komponenten und Staatsmanagement: React verwaltet den Zustand durch Komponenten (Funktionen oder Klassen) und Hooks (wie Usestate), wodurch die Wiederverwendbarkeit und Wartung von Code verbessert wird. 2. Virtuelle DOM- und Leistungsoptimierung: Reagieren Sie durch virtuelles DOM effizient die reale DOM, um die Leistung zu verbessern. 3. Lebenszyklus und Haken: Hooks (wie die Verwendung von UseEffect) ermöglichen Funktionskomponenten, Lebenszyklen zu verwalten und Nebeneffektoperationen durchzuführen. V.

Reacts Ökosystem: Bibliotheken, Tools und Best PracticesReacts Ökosystem: Bibliotheken, Tools und Best PracticesApr 18, 2025 am 12:23 AM

Das React-Ökosystem umfasst staatliche Verwaltungsbibliotheken (z. B. Redux), Routing-Bibliotheken (z. B. Reactrouter), UI-Komponentenbibliotheken (wie Material-UI), Testwerkzeuge (wie Scherz) und Erstellung von Tools (z. B. Webpack). Diese Tools arbeiten zusammen, um Entwicklern dabei zu helfen, Anwendungen effizient zu entwickeln und zu pflegen, und die Effizienz der Code zu verbessern.

Reagieren und Frontendentwicklung: Ein umfassender ÜberblickReagieren und Frontendentwicklung: Ein umfassender ÜberblickApr 18, 2025 am 12:23 AM

React ist eine von Facebook entwickelte JavaScript -Bibliothek zum Erstellen von Benutzeroberflächen. 1. Es wird komponentierte und virtuelle DOM -Technologie verwendet, um die Effizienz und Leistung der UI -Entwicklung zu verbessern. 2. Die Kernkonzepte von React umfassen Komponentierungen, Staatsmanagement (wie Usestate und UseEffect) und das Arbeitsprinzip des virtuellen DOM. 3. In praktischen Anwendungen unterstützt React von der grundlegenden Komponentenwiedergabe bis hin zur erweiterten asynchronen Datenverarbeitung. 4. Häufige Fehler wie das Vergessen, Schlüsselattribute oder falsche Statusaktualisierungen hinzuzufügen, können durch ReactDevtools und Protokolle debuggen werden. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung von React.MEMO, Code -Segmentierung und Halten des Codes und die Aufrechterhaltung der Zuverlässigkeit

Die Kraft des Reagierens in HTML: Moderne WebentwicklungDie Kraft des Reagierens in HTML: Moderne WebentwicklungApr 18, 2025 am 12:22 AM

Die Anwendung von React in HTML verbessert die Effizienz und Flexibilität der Webentwicklung durch Komponentierungen und virtuelles DOM. 1) Die Reaktion der Komponentierung Die Idee unterteilt die Benutzeroberfläche in wiederverwendbare Einheiten, um das Management zu vereinfachen. 2) Virtuelle DOM -Optimierungsleistung, minimieren Sie DOM -Operationen durch Differungsalgorithmus. 3) Die JSX -Syntax ermöglicht das Schreiben von HTML in JavaScript, um die Entwicklungseffizienz zu verbessern. 4) Verwenden Sie den Usestate -Hook, um den Status zu verwalten und dynamische Inhaltsaktualisierungen zu realisieren. 5) Optimierungsstrategien umfassen die Verwendung von React.Memo und Usecallback, um unnötiges Rendern zu verringern.

Das Verständnis der Hauptfunktion von React: Die Frontend -PerspektiveDas Verständnis der Hauptfunktion von React: Die Frontend -PerspektiveApr 18, 2025 am 12:15 AM

Zu den Hauptfunktionen von React gehören komponentiertes Denken, Staatsmanagement und virtuelles DOM. 1) Die Idee der Komponentierung ermöglicht es, die Benutzeroberfläche in wiederverwendbare Teile aufzuteilen, um die Lesbarkeit und Wartbarkeit der Code zu verbessern. 2) Das staatliche Management verwaltet dynamische Daten durch Status und Requisiten und ändert sich auslösen UI -Updates. 3) Aktualisieren Sie die Benutzeroberfläche virtuelle DOM -Optimierungsleistung durch die Berechnung des Mindestbetriebs der DOM -Replik im Speicher.

Frontend -Entwicklung mit Reaktionen: Vorteile und TechnikenFrontend -Entwicklung mit Reaktionen: Vorteile und TechnikenApr 17, 2025 am 12:25 AM

Die Vorteile von React sind seine Flexibilität und Effizienz, die sich in: 1) basierendem Design widerspiegeln, verbessert die Wiederverwendbarkeit des Codes. 2) Virtual DOM -Technologie optimiert die Leistung, insbesondere beim Umgang mit großen Mengen an Datenaktualisierungen. 3) Das reiche Ökosystem bietet eine große Anzahl von Bibliotheken und Tools von Drittanbietern. Wenn Sie verstehen, wie React Beispiele funktioniert und verwendet, können Sie seine Kernkonzepte und Best Practices beherrschen, um eine effiziente, wartbare Benutzeroberfläche zu erstellen.

Reagieren Sie gegen andere Frameworks: Vergleichen und KontrastoptionenReagieren Sie gegen andere Frameworks: Vergleichen und KontrastoptionenApr 17, 2025 am 12:23 AM

React ist eine JavaScript -Bibliothek zum Erstellen von Benutzeroberflächen, die für große und komplexe Anwendungen geeignet sind. 1. Der Kern von React ist Komponentierung und virtuelles DOM, wodurch die UI -Rendering -Leistung verbessert wird. 2. Im Vergleich zu VUE ist React flexibler, hat aber eine steile Lernkurve, die für große Projekte geeignet ist. 3. Im Vergleich zum Angular ist React leichter, hängt von der Gemeinschaftsökologie ab und geeignet für Projekte, die Flexibilität erfordern.

Entmystifizierende Reaktionen in HTML: Wie alles funktioniertEntmystifizierende Reaktionen in HTML: Wie alles funktioniertApr 17, 2025 am 12:21 AM

React arbeitet in HTML über virtuelles DOM. 1) React verwendet die JSX-Syntax, um HTML-ähnliche Strukturen zu schreiben. 2) Virtual DOM -Management -UI -Update, effizientes Rendering durch Differungsalgorithmus. 3) Verwenden Sie Reactdom.render (), um die Komponente zum realen DOM zu rendern. 4) Optimierung und Best Practices umfassen die Verwendung von React.MEMO und Komponentenaufteilung zur Verbesserung der Leistung und Wartbarkeit.

See all articles

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)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.