Was passiert mit ungebundenen JavaScript-Literalen?

8

Was passiert mit JavaScript-Literalen (Strings, Zahlen), die nicht an eine Variable gebunden sind (auch bekannt)?

%Vor%

Der Browser scheint sie zu ignorieren, aber ich konnte in der Spezifikation keine bestimmte Regel finden

    
Christoph 29.06.2017, 20:10
quelle

5 Antworten

8

Dies sind "Ausdrucksanweisungen". Solche Ausdrücke werden ausgewertet, aber da sie nicht zugewiesen sind, wird ihr Wert nicht gespeichert. JavaScript-Engines erkennen wahrscheinlich diejenigen, die keine Nebenwirkungen haben, und beseitigen sie, als wären sie nie da.

Aber immerhin hat mindestens einer davon einen Effekt:

%Vor%

Dies hat die Bedeutung einer JavaScript-Anweisung

>

Aus der EcmaScript-Spezifikation :

  

A Use Strict Directive ist ein ExpressionStatement in einem Direktivprolog, dessen StringLiteral entweder die exakte Codeeinheit sequences "use strict" oder 'use strict' ist.

Beachten Sie auch, dass andere Zeichenfolgenliterale können eine besondere Bedeutung haben, wenn sie im direktiven Prolog verwendet werden:

  

Implementierungen können implementierungsspezifische Bedeutungen für ExpressionStatement -Produktionen definieren, die keine Use Strict Directive sind und die in einem Direktive-Prolog vorkommen.

    
trincot 29.06.2017, 20:13
quelle
6

Es ist nur eine Ausdruckserklärung , die bewertet - ohne Nebenwirkungen - auf einen Wert, der verworfen wird.

Sie können sehen, dass es das Ergebnis der Anweisung ist, wenn Sie dies in eval oder einer REPL versuchen.

    
Bergi 29.06.2017 20:13
quelle
1

Die Werte werden im Speicher gespeichert, bis sie vom Garbage Collector bereinigt werden, da nichts auf diesen Ort im Speicher zeigt.

    
Robert Juneau 29.06.2017 20:23
quelle
0

Da der Wert nicht gespeichert wird (d. h., es wird kein Platz reserviert, um Ihr Literal zu halten), wird er mehr oder weniger vom Browser ignoriert und auch kein Overhead für den Garbage Collector. Zumindest die Funktion Ihres Codes ändert sich nicht. Ihre Javascript-Datei wird natürlich ein kleines bisschen größer sein, weil sie mehr (nutzlosen) Text enthält.

    
Double M 29.06.2017 20:16
quelle
0

Es scheint, dass sie als Variablen behandelt werden, die in nichts eingefügt werden. Es behandelt sie, als ob sie sowieso nicht existieren. Probieren Sie es aus:

%Vor% %Vor%

Wie Sie sehen, passiert nichts, wenn die leere Zeichenfolge dort ist. Das ist eine interessante Frage, daher wäre ich sehr daran interessiert, andere Ergebnisse zu hören.

    
DecstarG 29.06.2017 20:18
quelle

Tags und Links