かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

JavaScript parseInt, paeseFloat が NaN になるとき 0 を返したい

JavaScriptparseInt, parseFloat10px とか単位がある文字列でもいい感じに数値変換して返してくれますが、空文字列 "" の時 NaN が返されます。その後の計算でエラーになることも多いので NaN の代わりに 0 を返したいときのメモ

空文字や undefined が渡された時 parseInt, parseFloat は NaN を返す

parseInt("10px"); // => 10
parseInt(""); // => NaN
parseInt(undefined); // => NaN

parseFloat('2.5rem'); // => 2.5
parseFloat(""); // => NaN
parseFloat(undefined); // => NaN

|| を使えばOK

|| は左辺が falsy な時、右辺を返すのを利用してデフォルト値を返すようにすることができる

parseInt("10px") || 0; // => 10
parseInt("") || 0; // => 0
parseInt(undefined) || 0; // => 0

parseFloat('2.5rem') || 0; // => 2.5
parseFloat("") || 0; // => 0
parseFloat(undefined) || 0; // => 0

parseInt, parseFloatNaN になるときは 0 を返すことが出来るようになりました!
₍ ᐢ. ̫ .ᐢ ₎ ヤッタネ!

parseIntInfinity を返すこともあるけど、あまりなさそうだし style から取得した値をかを変換して NaN が返される可能性がある場合は parseInt(val) || 0 で事足りそう。


[参考]