Sorry, ich bin ein bisschen wie ein Anfänger, wenn es um Javascript geht. Aber hier ist mein Problem: Die folgende Funktion gibt -1, wenn 0 inputed wirdJavascript logischer Operator || liest 0 als falschen Wert. Gibt es einen schönen Weg?
function foo(bar){
return bar || -1;
}
foo(0);
gibt es eine schöne und elegante Weise, die zu erlauben || Der Operator liest 0 (speziell 0, nicht alle falschen Werte) als gültigen Wert, so dass die Funktion 0 zurücksendet. Oder muss ich dies tun:
function foo(bar){
if(bar === 0){
return 0;
} else {
return bar || -1;
}
}
foo(0);
Edit:
Vielen Dank an alle für eure Antworten! Für diejenigen, die sich wundern, wurde die Frage gestellt, um die Lösung für das gleiche Problem mit optionalen Parametern zu finden. Der folgende Code ist ein Beispiel dafür, wie er angewendet werden könnte.
function Point(x,y,meta){ //meta is an optional parameter. In this case I wanted to set meta to 0, but it was being set to null.
this.x = x;
this.y = y;
//this.meta = meta || null; This line is the old code that would set meta to null when 0 is inputed.
this.meta = meta === 0 ? 0 : (meta || null); //the fix suggested by many users is applied here.
};
var foo = new Point(1,2,0);
console.log(foo.meta); //foo.meta is now 0 instead of null!
In welchen Fällen möchten Sie '-1' erhalten, genau? Die Falsy-Werte sind "undefiniert", "null", "falsch", "+ 0", "-0", "NaN", "". – Oriol
Zur Erinnerung, ich habe keine Ahnung, warum das abgelehnt werden würde. Truthy und Falsy Werte sind ein kompliziertes Thema in JS. Darüber hinaus erstellte das OP ein sehr prägnantes Beispiel für sein Problem, um seine Frage zu verdeutlichen. –
'foo (Infinity)' Welche Ausgabe erwartest du hier? –