Was ist die Interpretation dieser Zeile in Javascript.Die Interpretation einer Zeile Javascript-Code
var x[],matrix[],n;
...
n = (matrix = x) && matrix.length;
Obwohl ich suchte, konnte ich keine Tipps finden.
Danke
Was ist die Interpretation dieser Zeile in Javascript.Die Interpretation einer Zeile Javascript-Code
var x[],matrix[],n;
...
n = (matrix = x) && matrix.length;
Obwohl ich suchte, konnte ich keine Tipps finden.
Danke
Es tut dies:
x
zu matrix
Ordnet; Das Ergebnis des Ausdrucks matrix = x
ist der Wert, der zugewiesen wurde (dies gilt für alle Zuweisungsausdrücke). Nennen wir diesen Wert "x-Wert". Ich will es von nun an nicht x
nennen, weil x
nur einmal ausgewertet wird.matrix.length
zu n
; Weist andernfalls x-value n
zu.So zum Beispiel, wenn x
[]
ist, setzt der Code matrix
auf den gleichen leeren Array Punkt x
tut und setzt n
zu 0
(matrix.length
nach der Zuweisung). Andere Beispiele (ich habe diese geschrieben, bevor Sie Ihre Frage bearbeiten): Wenn x
"foo"
ist, setzt sie matrix
zu "foo"
und setzt n
-3
(die length
von matrix
). Wenn x
ist ""
(a falsy Wert) ist, setzt es matrix
zu ""
und Sätze n
zu ""
. Wenn x
{foo:"bar"}
ist, setzt es matrix
auf dasselbe Objekt und setzt n
auf undefined
(da das Objekt keine length
Eigenschaft hat). Du hast die Idee.
# 2 oben kommt zustande, weil &&
ist nicht nur eine einfache logische AND-Operator. a && b
funktioniert wie folgt:
a
Bewerten Sie seinen Wert zu erhalten; Nennen wir, dass a-Wert&&
Operator a-Wertb
und machen, dass das Ergebnis der &&
Betreiber"Truthy" -Werte sind alle Werte, die nicht "falsy" sind. Die Falsy-Werte sind 0
, null
, undefined
, ""
, NaN
und natürlich false
.
(matrix = x)
ist der Zuweisungsvorgang von x
in eine Variable matrix
. Hier ist x
ein Array, daher ergibt das Ergebnis dieser Operation einen truthigen Wert, und daher findet der spätere Teil statt.
z. wenn
var x, matrix = [], n;
n = (matrix = x) && matrix.length;
wird nicht funktionieren, da die (matrix = x)
ein falsy Betrieb ist. n
wird undefined
zugewiesen (weil das der Wert x
ist).
"' (matrix = x) 'ist eine Falsy-Operation. N bleibt' undefined' "auch erwähnenswert, dass dies irreführend ist -' n' nicht _stay_ undefined, es wird der 'undefined' Wert zugewiesen. Es ist ein kleiner, aber wichtiger Unterschied, denn wenn 'x' gleich' '' 'wäre, wäre' n' auch '' '' danach oder wenn 'n' einen Wert hätte, wäre es jetzt 'undefined'. Die Zuweisung ändert den Wert, nur in Ihrem spezifischen Beispiel würde es den gleichen Wert wie zuvor ändern. – vlaz
Korrekt @VLD Stark hingewiesen. Mein Fehler. Wenn die Operation "(matrix = x)" einen Falschwert zurückgibt, wird "n" einem "undefinierten" Wert zugewiesen. Werde Dich auf dem Laufenden halten. – Ayan
Haben Sie versucht, es auszuführen? Was war das Ergebnis? Was hat dich überrascht? – jonrsharpe
n ist ein boolescher Wert, wenn die Matrix ein Array mit der Länge und x ein Array ist, das gleich x – Kosch
ist 'matrix = x; n = matrix && matrix.length; ' –