Javascript で文字列から数値への冴えた変換
問題
var i_want_number = document.getElementById("num0");
i_want_number
は残念ながら文字列だ.これを回避するには parseInt
や parseFloat
があるが,ちょっとだるい感じがある気もする.
解決
var i_want_number = +document.getElementById("num0");
これはつまり何かを bool
にしたい時に
!!foo
とやるのと同じような話だ.気持ち悪いといえば気持ち悪いけど,いい感じに使えるのではないだろうか.
これは d3.js の tutorial 読んでる時に見つけたものです.
追記
Number
というのがあるので多分こっちを使うべきなんだとおもう.
Number("3.3") // => 3.3
Number("3") // => 3
Number("3ab") // => NaN
追記 II
ちなみに new Number(4)
と 4
は違い,前者は数値オブジェクトを生成するのに対してリテラルの方は primitive 値を作るということになるため,前者は
一般に非推奨とのこと. new
を付与せずに実行した場合は primitive を返すらしい.読み返すとふつうに parseFloat
使えという気がする.