2017-09-07 3 views
-2

Javascript Neuling hier und mein Geist ist jetzt gebogen.Warum wird var test = false wahr, wenn Sie test =! Test?

var test = false 
test = !test 
// returns true 

Ich weiß, dass die! ist ein Bang-Operator und ändert einen booleschen Wert in das Gegenteil dessen, was er gerade ist.

Aber ich kann nicht begreifen, was in

test = !test 

Die Variable Test falsch zunächst auf den Wert zeigt los ist, aber wird diese Variable auf sich selbst gesetzt zu werden? Es scheint, dass die Testvariable auf sich selbst gesetzt wird und dann der Bang-Operator anwendet, um es wahr zu machen. Aber könnten beide Seiten eines Zuweisungsoperators auf die gleiche Variable gesetzt werden?

+4

'// returns false' - nein, es nicht –

+2

Es ist wie' x = x + 1 '. Denken Sie daran, zuerst wird die rechte Seite ausgewertet, dann wird sie der linken Seite zugewiesen. – Xufox

+1

Es gibt wahrer Typ zurück! – Mikkel

Antwort

0

Machen wir das Schritt für Schritt.

test = 

Sie zuweisen jetzt test ein neuer Wert

= ![...] 

, die das logische Gegenteil von dem ist ...

= !test 

... den aktuellen Wert in test. Was dieser Code zusammenfassend macht, ist, den Test zu invertieren und das Ergebnis dieser Operation wieder auf die Variable selbst anzuwenden, um sie effektiv zu ändern.

Was die ganze Operation helfen könnte zu verstehen ist, dass testnicht ist falsch deutete aber ist falsch.

0
var test = false; // test = false 
test = !test; // test = true (because `test` was `false`, now it's equal to opposite value: `true`) 

Und nicht Semikolons am Ende der Zeilen ignorieren.

0

var test = false

Hier können Sie den Wert von test setzen falsch.

test = !test

Zunächst ist die rechte Seite ausgewertet. Wenn Sie also auf test verweisen, erhalten Sie seinen Wert.

Ultimatelly test ist das gleiche wie false. So wird !test!false, was zu true ausgewertet wird.

So kann Ihre test = !test ist die gleiche wie test = !false und wird schließlich test = true

0

Sie haben soeben mit neuem Wert Variable Test zuordnen, und der neue Wert ist! Test.

var test = false; 
 
test = !test; //you assign new value to test, and old value will be replaced 
 
document.getElementById('tes').value = test;
<input type='text' id='tes'>

Verwandte Themen