問題
他の答えはそれ0
が偽物であることを考慮に入れていないため、以下は0ではなく20になります。
const myNumber = parseInt('0') || 20; // 20
ソリューション
ほとんどの問題を解決するヘルパー関数を提案します。
function getNumber({ value, defaultValue }) {
const num = parseInt(value, 10);
return isNaN(num) ? defaultValue : num;
}
ヘルパー関数は次の結果を返します。
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
NaN != NaN
。あなたが必要になるでしょうisNaN(value)
。