JavaScript文字列は数字の5種類の方法と落とし穴を回転します.

2924 ワード

要旨:JavaScriptは不思議な言語で、文字列の回転数は5つの方法があります.それぞれ穴法があります.
  • 原文:Coverting Strigs to Number in Javascript:Pitfalls
  • 翻訳者:Fundbug
  • この文章は意訳を採用して、著作権は元の作者の所有になります.
    StringからNumberに変換する方法はいろいろあります.私が考えられるのは5種類です.
    parseInt(num); //      (    )
    parseInt(num, 10); //      (   )
    parseFloat(num); //    
    Number(num); // Number    
    ~~num; //   
    num / 1; //     
    num * 1; //     
    num -
    0 + //   0
        num; //       "+"
    どちらを選びますか?いつそれを選びますか?なぜこのようなものを選んだのですか?逐一解析を行い,各方式の共通トラップを解析した.
    parseInt
    Js Perf.comの基準テストによれば、ほとんどのブラウザはパーrseIntに対する応答が一番良いです.それは一番早い方法ですが、preseIntを使うといくつかのよくある落とし穴に出会います.
    parseInt("08"); // returns 0       .
    parseInt("44.jpg"); // returns 44
    parseInt:着信基数がない場合、デフォルトでは着信基数は10 parseInt(num, 10)であり、num属性のタイプが分からない場合、パーrseIntを使用して文字列を回転しないでください.
    パーrse Float
    16進数を解析しないなら、これはとてもいい選択です.たとえば:
    parseInt(-0xff); // returns -255
    parseInt("-0xFF"); // returns -255
    parseFloat(-0xff); // returns -255
    parseFloat("-0xFF"); // returns 0
    注意:文字列の負の16進数の数字は特殊な場合、パーrseFloatを使って解析すると、結果は正しくありません.プログラムにNaNが発生しないように、変換後の値を確認します.
    parseFloat("44.jpg"); // return 44
    parseFloat:16進数を変換する時は注意してください.もし変換対象のタイプが分からないなら、パーrseFloatを使わないでください.
    位によって違う
    文字列を整数に変換できますが、彼は浮動小数点ではありません.文字列変換であれば、0を返します.
    ~~1.23; // returns 1
    ~~"1.23"; // returns 1
    ~~"23"; // returns 23
    ~~"Hello world"; // returns 0
    これはどういう原理ですか?各ビットを反転させることにより、デジタルA 1の補数とも呼ばれる.これを使ってもいいですが、整数だけを記憶することができます.したがって、通常は32ビットの整数の間の値を決定することができない限り、それを使用しないでください. :入力中に文字がないことを確認して、整数だけにします.
    Number
    Numberは上記の変換方式と同じように問題があります.解析する時に彼に与えられた数字を探してみます.
    Number("023"); // returns 23
    Number(023); // returns 19
    注意:023は実際には8進数です.どうやって作っても19に戻ります.シングルクォーテーションマークまたはダブルクォーテーションマークがない16進数は同じです.
    NumberもJsPerfの中で最も遅いものの一つです.Number:ほとんど使わないです.
    単項演算子
    "1.23" * 1; // returns 1.23
    "0xFF" - 0; // returns 255
    "0xFF.jpg" / 1 + // returns NaN
        "023"; // returns 23
    単項演算子は他の解析方式とは異なり、NaN値であれば、NaNを返します.これは私が一番好きな数値の変換方法です.文字のあるオブジェクトはどれも0として扱われるべきではないと思います.あるいは彼の何人がいるかによって、「当てる」べきです.私は基本的に+オペレータを使います.この方式は紛らわしいからです.-0の使い方もいいですが、数字に変換するという意味はあまりよく表現されていません.
    文字列を数値に変換してまとめます.
    負の16進数文字列を数値に変換する場合.最初に、任意のものをStringに変換し(例えば、+ ""を介して)、その後、1つの要素演算子またはベースバンドのparseIntを用いて、数値として解析するべきである.しかし、結果がNaNの数値ではない場合は、パーパーミッションを使ったほうがいいです.
    Funebugについて
    FunndebugはJavaScript、微信小プログラム、微信小ゲーム、支払宝小プログラム、React Native、Node.js、JavaオンラインでリアルタイムBUG監視を適用します.2016年に双十一が正式にオンラインしてから、Fundebugは累計で10億+エラー事件を処理しました.有料顧客はGoogle、360、金山軟件、庶民網など多くのブランド企業があります.皆さん、無料で試用してください.
    著作権声明
    転載する時、作者のFunebugと本文の住所を明記してください.
    https://blog.fundebug.com/2018/07/07/string-to-number/