JavaScript Warum returniert das undefined?

Hendoul

Commander
Registriert
Apr. 2008
Beiträge
2.158
Hi :)

Javascript:
const v1 = undefined;
const v2 = 'something'
const result = v1 && v2;

console.log(result);

Warum ist das result undefined?
Ich hätte false erwartet weil undefined zu den falsy values gehört.
 
undefined && 1 ist undefined
0 && 1 ist 0
false && 1 ist false
1 && 2 ist 2

je nach Sprache liefern die Operatoren true false, oder den Originalwert zurück (der dann ja immer noch korrekt als true false interpretiert werden kann)
 
Javascript:
const v1 = undefined;
const v2 = 'something'
const result = !!v1 && !!v2;

console.log(result);

Das hier liefert das was du haben willst ;)
 
Es ist sogar so, dass v2 gar nicht erst ausgewertet wird, weil && in der Regel - und soweit ich weiß auch in JavaScript - logische Ausdrücke nur dann komplett auswertet, wenn es sinnvoll ist. Bei && reicht es daher, den ersten Ausdruck (v1) auszuwerten, wenn dieser bereits false ist. v2 ist in dem Fall irrelevant, weil result in keinem Fall mehr true werden kann.

Im Falle zweier Variablen fällt das nicht unbedingt auf, aber wenn der zweite Ausdruck ein Funktionsaufruf ist, wird diese Funktion nicht aufgerufen, wenn der erste Ausdruck bereits false ist, egal was die Funktion neben dem Rückgabewert auch sonst noch so tun würde.
 
  • Gefällt mir
Reaktionen: BeBur
Ich lass das mal hier:


JS hat halt so seine "Eigenheiten". Wenn du ein bool forcieren willst, benutz lieber explizit
Code:
const v1 = undefined;
const v2 = 'something'
const result = !!(v1 && v2);

console.log(result);

edit: Und benutz doch bitte das Wort "zurückgeben". "retournieren" ist was Anderes und "returnieren" gibts nicht, außer in Denglisch.
 
  • Gefällt mir
Reaktionen: 0x8100, floq0r und kieleich
Dankeschön :)
 
Zurück
Oben