なぜparseInt("-1000-500-75-33")
返信-1000
?文字列番号混乱
それはこれらの数字の合計を返すべきではありません:-1608
がどのように私は、文字列"-1000-500-75-33"
は、これらの数字の和として返すために得ることができますか?
なぜparseInt("-1000-500-75-33")
返信-1000
?文字列番号混乱
それはこれらの数字の合計を返すべきではありません:-1608
がどのように私は、文字列"-1000-500-75-33"
は、これらの数字の和として返すために得ることができますか?
parseInt
文字列の先頭から番号を取得しようとします。
-
は数字を始める有効な文字であるため、無効なものが見つかるまで文字列を解析します。 2番目の-
は無効です。整数の中に-
を含めることができます。数字は数字のみです。それでそこで止まり、数字が「終了」とみなされます。
さて、あなたはプロセスに表現をしたい場合、あなたはそのようeval
を使用することができます:予想通り
eval("-1000-500-75-33")
をこれが-1608
を返します。
文字列内にあるため、ParseIntは文字列全体を解析せず、最初から適用可能な数値を見つけます。&を返します。文字列の先頭が解析できない場合、それはあなたがそれをコンソールに入力したコマンドであるかのように文字列を与えられた評価される、あなたがやりたいeval
機能を使用する必要がNaN
parseInt("-1000NOT_NUMBER") = -1000
parseInt("test-1000`) = NaN
を返します。
eval("-1000-500-75-33") = -1608
eval("-1000-500-75-33").toString()
console.log(eval("-1000-500-75-33").toString());
そして、型キャストについてをお試しください:明らかに "1000負" である、-1000を解析した後、それはすぐにそれが検出としてキャストエスケープします数字の間に共通の記号&文字列。したがって、parseInt
は"-1000-500-75-33"
が"-1000NotConvertableString"
と表示されているので、タイプキャストの結果として-1000
が返されます。
parseInt
は計算を実行せず、文字列を整数に変換しようとします。それ以降のダッシュは有効な数字ではないため、-1000
を返します。
var numString = "-1000-500-75-33";
numString.split('-').map(e => Number(e)).reduce((a, b) => a - b);
eval( " - 1000-500-75-33")toString() '?toString()'?toString() '? – Hodrobond
@Hodbondが働いた、ありがとう!それを答えとして投稿すれば、私はあなたに小道具をあげる –