2014/01/17

JavaScriptでparseInt

 珍しくJavaScriptで引っ掛かったので忘れないようにメモ。実はJavaScriptを書くのも久しぶりだったりする。 JavaScriptは変数の型が自由で、文字列の数字と数値の足し算が出来る。
var a = "10";
var answer = 0;
 
answer = 10 + a;
console.log(answer);
 
answer = 20 + parseInt(a);
console.log(answer);
 
answer = 30 + parseInt(a,10);
console.log(answer);
文字列と数値の足し算はJavaと同様に数値の文字表現で連結になる。よって数値として計算するためにparseIntを使う。これもまぁJavaと同様だが変数の型を意識しないことが多いのでうっかり忘れがち、というだけだ。
 記憶ではparseInt関数は8進数文字列がデフォルトなので明示的に10進数と指定しないと意図しない結果になっていたような気もするが改めて試すとそんなこともないようだ。

 調べ直すと、「"0"で始まる場合」8進数の文字列となる、という情報はある。以前はこれによく引っ掛かっていた。有名な「"0x"で始まれば16進数」、の8進数での決まりらしい。しかし今FireBugsで試すとやはりそんなこともないようだ。
answer = "10";
console.log(answer); // 10 となる
 
answer = parseInt("010");
console.log(answer); // 10 となった
 
answer = parseInt("0x10");
console.log(answer); // 16 となる

0 件のコメント:

コメントを投稿