Der Punkt „.“ hat in JavaScript zwei Bedeutungen
Semantik 1. Stellt den Dezimalpunkt (Gleitkommazahl) in der Arithmetik dar, z. B. 2,5
Semantik 2. Objektattribute und -methoden abrufen, z. B. [].push(2)
Es gibt kaum etwas, das schwer zu verstehen ist, aber die folgende Frage ist interessant.
Kopieren Sie den Codecode wie folgt:
// Wie wird diese Codezeile ausgeführt?
1.toString();
Wie folgt in Firebug
Der Punkt drückt hier die oben erwähnte Semantik 1 aus, daher muss dem Punkt eine Zahl folgen. Was hier folgt, ist toString, und die Berichtssyntax ist falsch.
Die Lösung ist sehr einfach, beispielsweise das Hinzufügen von Klammern
Kopieren Sie den Codecode wie folgt:
(1).toString();
Man kann es immer noch so schreiben, aber es ist schwieriger zu verstehen
Kopieren Sie den Codecode wie folgt:
1..toString();
Der Grund, warum es in Browsern ausgeführt werden kann, liegt darin, dass jede Browser-JS-Engine „1..toString()“ als „1.0.toString()“ versteht. Der erste Punkt ist hier Semantik 1 und der zweite Punkt ist Semantik 2.
Es gibt eine noch seltsamere Schreibweise, aber es wird kein Fehler gemeldet.
Kopieren Sie den Codecode wie folgt:
1.toString(); // Beachten Sie, dass vor dem Punkt ein Leerzeichen steht
Offensichtlich ist der Punkt hier semantisch 2, das heißt, die JS-Engine ignoriert die Leerzeichen vor dem Punktoperator. Unabhängig von den Leerzeichen davor oder danach wird er ignoriert. wie folgt
Kopieren Sie den Codecode wie folgt:
1. toString(); // Vor und nach dem Punkt steht ein Leerzeichen
1. toString(); // Es gibt zwei Leerzeichen vor und nach dem Punkt.
1.toString(); // Vor dem Punkt steht ein Tabulator
1. toString(); // Es gibt einen Tabulator vor und nach dem Punkt.
Die JS-Engine ignoriert nicht nur Leerzeichen, sondern auch Tabulatoren.