2016-04-08 3 views
0

Heute hatte ich einen Tippfehler, weil es schwer zu fangen war kein Fehler zu werfen als ich ... erwartet hätteWarum gibt der folgende JavaScript-Code wahr zurück? Sollte es nicht einen Fehler werfen?

Nach einiger schnell den Code zu testen unten immer true zurück, und natürlich, in diesem Fall gibt "zuerst" zurück. Warum passiert das? Und warum erzeugt es keinen Fehler?

Hier ist ein einfaches Beispiel für den Code:

function func(num) { 
    return num = 5 ? 'first' : 'second'; 
} 

console.log(func(1)); // log 'first' 

Mein Linter gefangen, aber ich war in einem JSBin zunächst und bemerkte nicht.

Antwort

4

num = 5 ? 'first' : 'second' Ausdruck wird wie folgt bewertet:

  1. 5 ? 'first' : 'second' Ausdruck zuerst ausgewertet wird (da der Bedingungsoperator höhere Priorität als ein Zuweisungsoperator ist) und gibt den Wert 'first' da 5 „truthy“ ist.
  2. num = 'first' Ausdruck ordnet die 'first' Zeichenfolge an den num Variable und gibt die 'first' seit der Zuweisungsoperator = den rechten Operanden zurückgibt.

Nützliche Links:

+0

Wie zum Teufel du so schnell? Danke dafür @zerkms – JordanHendrix

+1

@JordanHendrix Ich bin eine Katze - Katzen sind schnell: 3 – zerkms

+0

Ich bekomme den zweiten Teil, der 5 ist truthy, der erste Teil war mehr das Problem, nochmals danke – JordanHendrix

Verwandte Themen