パラメータの数値型に応じて異なる動作をする関数を作成しました。整数または浮動小数点数。
この質問のコードを使用して、数値が浮動小数点または整数であることを確認するにはどうすればよいですか? float かどうかは簡単に検出できましたが、その数値を使用して関数を呼び出すと、javascript が原因なしにキャスト1.0
する場合に遭遇しました。1
例:
function dump(a, b) {
console.log(a, typeof b, b);
}
dump('1', 1);
dump('1.0', 1.0);
dump('1.1', 1.1);
出力 chrome、firefox、つまり、opera と safari はすべて同じ結果になりました。
1 number 1
1.0 number 1 "wrong"
1.1 number 1.1
JavaScript は型しか認識していないことはわかっていますnumber
が、その強制キャストは行き過ぎているようです。私が思いついた唯一の解決策は、 のような文字列値を使用して関数を呼び出し'1.0'
、ドットを検出してparseFloat
orを使用することparseInt
でした。
それについて何か提案はありますか?