Das Problem
Andere Antworten lassen außer Acht, dass 0
ist falsch, so dass die folgende Zahl 20 anstelle von 0 sein wird:
const myNumber = parseInt('0') || 20; // 20
Die Lösung
Ich schlage eine Hilfsfunktion vor, die die meisten der Probleme löst:
function getNumber({ value, defaultValue }) {
const num = parseInt(value, 10);
return isNaN(num) ? defaultValue : num;
}
Die Hilfsfunktion liefert die folgenden Ergebnisse:
getNumber({ value: "0", defaultValue: 20 }); // 0
getNumber({ value: "2", defaultValue: 20 }); // 2
getNumber({ value: "2.2", defaultValue: 20 }); // 2
getNumber({ value: "any string", defaultValue: 20 }); // 20
getNumber({ value: undefined, defaultValue: 20 }); // 20
getNumber({ value: null, defaultValue: 20 }); // 20
getNumber({ value: NaN, defaultValue: 20 }); // 20
getNumber({ value: false, defaultValue: 20 }); // 20
getNumber({ value: true, defaultValue: 20 }); // 20