[解決済み] parseIntとunary plus、いつどちらを使うか?
2022-04-20 23:05:51
質問
この行の違いは何ですか。
var a = parseInt("1", 10); // a === 1
そしてこの行
var a = +"1"; // a === 1
これは jsperf test は、node.js用と仮定して、現在のクロームバージョンでは単項演算子がずっと高速であることを示しています!?
数字ではない文字列を変換しようとすると、両方とも
NaN
:
var b = parseInt("test" 10); // b === NaN
var b = +"test"; // b === NaN
では、どのような場合に
parseInt
を単項のプラスに置き換えたものです(特にnode.jsでは)。
編集
そして、ダブルチルド演算子と何が違うのでしょうか?
~~
?
解決方法は?
さて、私が知っている相違点をいくつか挙げてみましょう。
-
空の文字列
""
と評価されます。0
一方parseInt
と評価されます。NaN
. IMO では、空白文字列はNaN
.+'' === 0; //true isNaN(parseInt('',10)); //true
-
単項演算子
+
のように動作します。parseFloat
は小数も扱えるからです。parseInt
一方、小数点以下のピリオドのような非数値文字を見つけると、パースを停止します。.
.+'2.3' === 2.3; //true parseInt('2.3',10) === 2; //true
-
parseInt
とparseFloat
の文字列をパースして構築します。 左から右へ . もし無効な文字があれば、解析されたものを数字として返し、さらにNaN
というのは、数字として解析されたものがない場合です。単項の
+
を返します。NaN
は、文字列全体が数値に変換できない場合です。parseInt('2a',10) === 2; //true parseFloat('2a') === 2; //true isNaN(+'2a'); //true
-
のコメントにあるように @Alex K. ,
parseInt
とparseFloat
は文字単位でパースします。つまり、16進数や指数表記はx
とe
は非数値成分として扱われます (少なくとも base10 では)。単項の
+
はちゃんと変換してくれますが。parseInt('2e3',10) === 2; //true. This is supposed to be 2000 +'2e3' === 2000; //true. This one's correct. parseInt("0xf", 10) === 0; //true. This is supposed to be 15 +'0xf' === 15; //true. This one's correct.
関連
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] encodeURI / encodeURIComponentの代わりにescapeを使用するのはどのような場合ですか?
-
[解決済み] parseInt(1/0, 19)はなぜ18を返すのですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み】JavaScriptの「= +_」の意味とは?
-
[解決済み】Javascriptで~~("ダブルチルダ")は何をするのですか?