100['toString'] //does not fail
100.toString //fails
Warum?100.toString vs 100 ['toString']
100.toString ist nicht dasselbe wie 100.toString(). Warum bekomme ich im zweiten Fall die Funktion nicht als Rückgabewert?
100['toString'] //does not fail
100.toString //fails
Warum?100.toString vs 100 ['toString']
100.toString ist nicht dasselbe wie 100.toString(). Warum bekomme ich im zweiten Fall die Funktion nicht als Rückgabewert?
Die zweite Zeile schlägt fehl, da sie als Zahl "100." gefolgt von "toString" analysiert wird.
die Punktnotation zu verwenden, wird Jedes folgende Arbeiten:
(100).toString
100.0.toString
100..toString
var a = 100;
a.toString
Wenn Sie Aufruf die toString
Funktion versuchen, werden Sie auch die Klammern enthalten müssen:
(100).toString()
100.0.toString()
100..toString()
var a = 100;
a.toString()
Ich bevorzuge Klammern (oder eine Variable, wenn ich bereits eine habe), weil die Alternativen verwirrend und nicht intuitiv sein könnten.
Verwenden Sie stattdessen (100).toString
.
Parens ist der beste Weg zu gehen. Sie haben das gleiche Problem mit Funktionsdefinitionen.
function() {}.call() => fails
(function() {}).call() => succeeds
Ein anderes Beispiel: '100..toString()' funktioniert auch, da die erste Periode als Teil der Nummer und die zweite als Teil der Syntax für den Zugriff auf Eigenschaften gezählt wird. –
Beachten Sie, dass '100' und' 100.0' nicht identisch sind. – Gumbo
@ Max, guter Punkt. Es sieht irgendwie lustig aus, aber ich werde das auch hinzufügen. –