文字列を整数に変換するには、さまざまな方法があります。
parseInt("-1",10)
Math.floor("-1")
Number("-1")
"-1"|0
~~"-1"
最初の形式は標準的な形式だと思いますが、たとえばasmjsは 3 番目の形式を使用して int を強制します。おそらくもっと多くの方法があります。
これらのそれぞれを使用することの違いと利点は何ですか? どれが最も速いと予想されますか?
文字列を整数に変換するには、さまざまな方法があります。
parseInt("-1",10)
Math.floor("-1")
Number("-1")
"-1"|0
~~"-1"
最初の形式は標準的な形式だと思いますが、たとえばasmjsは 3 番目の形式を使用して int を強制します。おそらくもっと多くの方法があります。
これらのそれぞれを使用することの違いと利点は何ですか? どれが最も速いと予想されますか?
10 進数の int を解析する標準的な方法はparseInt(str, 10)
.
その他の解決策について:
parseInt("-1")
: 危険な生活をしたい場合にのみ使用してください ("009"
すべてではなく、10 進数であると想定するブラウザーもあります)。Math.floor("-1")
: int ではなくフロアかもしれませんが、それが整数であることを確認したい場合、それは正しい方法ではありません。Number("-1")
: 昇格せずにメソッドを呼び出すことができるようにオブジェクトが必要で、ガベージがないことを確認したい場合があります ( Number('3 flowers')
==> NaN
)"-1"|0
、~~"-1"
および暗黙の変換と二項演算のその他の組み合わせ: コード ゴルフが好きで、コードを簡単に保守したくない場合 (不思議に思う人のために: 二項演算は数値の整数部分を取ります)。コメントでBlenderが指摘したように、これらのソリューションは大きな(正または負の)数には適していません。parseInt(str,10)
文字列に int 以外のものが含まれていないことを確認する必要がない場合以外は、別の解決策を使用しないでください。これが最速のソリューションであり、さらに重要なことに、最も読みやすいソリューションです。JS エンジンが何らかの最適化を行う場合、他のソリューションがこれより高速になる理由はありません。
単項プラスはどうですか?型変換用に特別に設計されたようです。
+"-1" // -1