[フレーム]
はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできます コメント表示の設定

ブックマークしました

ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

536users がブックマーク コメント 63

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

JavaScript で parseInt / parseFloat を使わない方が良い理由

536 users nmi.jp

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

はてなブックマーク

はてなブックマークで
関心をシェアしよう

みんなの興味と感想が集まることで
新しい発見や、深堀りがもっと楽しく

ユーザー登録

アカウントをお持ちの方はログインページ

記事へのコメント63

  • 注目コメント
  • 新着コメント
teppeis
「JavaScript において、グローバル空間に生えている関数は基本ろくなものではない(暴論)」ここだけ覚えておけばOK

その他
xlc
グローバルな関数は初期に無考慮に作られ動作に問題があるが互換性のために残されているので、使わない方がよいものもある。ちゃんと考慮されてクラスメソッドとして再実装されたものもある。ということ。

その他
tyoro1210
明示的に cast しようとしてる関数の呼び出し時に、メソッドに渡す前に暗黙的な cast されてるのが渋いな

その他
tettekete37564
2022年だからさ!いやいい加減JSやめようぜ。組み込みのライブラリや関数の類は命名も挙動もおかしいの多い。複雑にネストされたカッコが必用なのはJSのスコープとオブジェクトの扱いがおかしいのを回避する為だからね

その他
stefafafan
parse, truncate, floorの英語の意味を考えるとまあ納得感ある気はする

その他
kako-jun
.NETのint.Parse()も、変換できない文字列ではtryで囲まないとアプリごと落ちて危険なのでint.TryParse()を使うし、名前がparseから始まるものは基本使わないって覚えようかな......

その他
haccian
どんな理由があるのかと思ったら、普通にバグで草。というか、もうjsとかいう欠陥言語使うのやめよう。

その他
uunfo
parseなんちゃらは文字列を解釈する関数なんだから、そこに数値を与えたら予想外の結果が出るのは当たり前のように思う。parseInt("0.0000005") が5になるならバグだけど

その他
homarara
うーん? そもそも余計な文字が入ってる文字列や、小数点入りの数値をparseIntで処理しようという時点で、バリデーションのバの字も知らん馬鹿者にしか見えないんだが、問題にする所を間違ってないか?

その他
door-s-dev
jsはブラウザで動く唯一の言語だから仕方なく使ってる人も多いのでは

その他
Nyoho
知らだったー

その他
UDONCHAN
parceIntもStringも使って良いんだけれども、結局無邪気な型変換をしてはいけないという結論なんじゃないだろうか。Math.trunc使ったとしても、バグるときはバグるるし。

その他
yo_waka
"JavaScript において、グローバル空間に生えている関数は基本ろくなものではない(暴論)ので、どうしても使わなければいけない"

その他
munieru_jp
"JavaScript において、グローバル空間に生えている関数は基本ろくなものではない" わかる

その他
mumei-0
"parseFloat(str) を使う場面では Number(str) を検討しよう parseInt(num) を使う場面では Math.trunc(num) を検討しよう"

その他
hamaco
"JavaScript において、グローバル空間に生えている関数は基本ろくなものではない(暴論)"

その他
azzr
"JavaScript において、グローバル空間に生えている関数は基本ろくなものではない(暴論)" fetch()に喧嘩売ってる?

その他
pmint
と言われて鵜呑みにするのはコピペプログラマー。parseInt()は型変換。端数処理に型変換を使うのは不適切。適材適所。

その他
rdrk
「猫を乾かすために電子レンジに入れたら死んだから、電子レンジは使わない方が良い」みたいなクレームは、どこまでつきあうべきなんだろな。

その他
zkzi3254
はぇ〜

その他
HHR
"グローバル空間に生えている関数は基本ろくなものではない(暴論)" 草

その他
toaruR
『parseInt(0.0000005) === 5』......ゲゲゲ\(^o^)/

その他
uunfo
uunfo parseなんちゃらは文字列を解釈する関数なんだから、そこに数値を与えたら予想外の結果が出るのは当たり前のように思う。parseInt("0.0000005") が5になるならバグだけど

2022年02月04日 リンク

その他
wataken44
そのうち思い出す用

その他
z1h4784
知ってるんだけどつい癖でparseIntを使っちゃうんだよな。たまにしかJavaScriptを書かないからMath.truncは忘れちゃう

その他
sa-yama321
if (!isString(val)) { throw new Error('xxx') }

その他
otchy210
文字列から数値への変換は正当な使い方でありと思っていたが、Number(str) の方がモダンでより安全と。

その他
send
"グローバル空間に生えている関数は基本ろくなものではない" せやなw

その他
mickn
"JavaScript において、グローバル空間に生えている関数は基本ろくなものではない"

その他
kazuhooku
「グローバル空間に生えている関数は基本ろくなものではない(暴論)」wwww良い記事

その他
ene0kcal
悪いけど知ってた(クソなことね)。こういった詳細と代替案を整理してるのは素晴らしい。

その他
ducktoon
こんな糞仕様の糞言語が広まってしまって悲しい

その他
h3poteto
わろた "JavaScript において、グローバル空間に生えている関数は基本ろくなものではない(暴論)"

その他
strawberryhunter
昔、JavaとPHPを比べてPHPがいかにヤバい言語かを説明するブログなどがあったが、JavaScriptには比べるべき言語が無いので今まで表立って批判されてこなかったのではないか。

その他
coolworld
そもそも、なんで文字列じゃないものを渡そうと思ったんだろう。

その他
koogawa
"parseInt というのは、文字列を解析して整数値(int)を返すグローバル関数であり、引数をまず文字列に変換する仕様となっております" なるほど

その他
morita_non
そもそも文字列以外渡すな。型が理解出来ない人間は型なし言語を使うべきではない。あれ?逆だったっけ?

その他
masarusanjp
なんでparseIntに文字列以外渡せるんだって思ったが、"parseInt は引数に数値ではなくて文字列を取ります。正確には仕様にある通り、まず引数を ToString によって文字列に変換します。" この仕様が罠っぽい

その他
lli
勘弁してくれ〜

その他
door-s-dev
door-s-dev jsはブラウザで動く唯一の言語だから仕方なく使ってる人も多いのでは

2022年02月04日 リンク

その他

注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

リンクを埋め込む

以下のコードをコピーしてサイトに埋め込むことができます

プレビュー
アプリのスクリーンショット
いまの話題をアプリでチェック!
  • バナー広告なし
  • ミュート機能あり
  • ダークモード搭載
アプリをダウンロード

関連記事

usersに達しました!

さんが1番目にブックマークした記事「JavaScript で par...」が注目されています。

気持ちをシェアしよう

ツイートする

JavaScript で parseInt / parseFloat を使わない方が良い理由

となるのが原因です。parseInt というのは、文字列を解析して整数値(int)を返すグローバル関数であり... となるのが原因です。parseInt というのは、文字列を解析して整数値(int)を返すグローバル関数であり、引数をまず文字列に変換する仕様となっております。その段階で 0.0000005 が "5e-7" という文字列に変換されてしまい、その文字列の先頭の 5 だけが数字として解析されてしまったため、結果として parseInt(0.0000005) === 5 となりました。 なぜ String(0.000005) === "0.000005" に、String(0.0000005) === "5e-7" になるのかについては、この記事の最後で余談として説明します。 整数化には Math.trunc を使おう このように、parseInt は文字列を引数にすることを前提にしているため、速度の面でも可読性の面でも「小数値を整数値に変換したい」という場合に使うのは望ましくありません。最も望

ブックマークしたユーザー

  • funghi_seven2025年06月03日 funghi_seven
  • buzztaiki2024年06月11日 buzztaiki
  • murasuke2024年06月10日 murasuke
  • moslee2023年06月11日 moslee
  • akiyoko2022年12月31日 akiyoko
  • techtech05212022年12月18日 techtech0521
  • yuyans2022年10月13日 yuyans
  • masarukondo2022年09月30日 masarukondo
  • otanuft2022年05月18日 otanuft
  • chibahiro2022年04月04日 chibahiro
  • deathmaiden2022年03月29日 deathmaiden
  • yuuki55552022年02月25日 yuuki5555
  • kikiki-kiki2022年02月21日 kikiki-kiki
  • yuu-yuiken2022年02月13日 yuu-yuiken
  • TakayukiN6272022年02月12日 TakayukiN627
  • yajamon2022年02月12日 yajamon
  • hush_in2022年02月11日 hush_in
  • l-liroki2022年02月11日 l-liroki
すべてのユーザーの
詳細を表示します

ブックマークしたすべてのユーザー

同じサイトの新着

同じサイトの新着をもっと読む

いま人気の記事

いま人気の記事をもっと読む

いま人気の記事 - テクノロジー

いま人気の記事 - テクノロジーをもっと読む

新着記事 - テクノロジー

新着記事 - テクノロジーをもっと読む

同時期にブックマークされた記事

いま人気の記事 - 企業メディア

企業メディアをもっと読む

はてなブックマーク

公式Twitter

はてなのサービス

Copyright © 2005-2025 Hatena. All Rights Reserved.
設定を変更しましたx

AltStyle によって変換されたページ (->オリジナル) /