|
||||||||
雑に使ってる私だけかもしれませんが・・・
0で始まる文字(数値型、文字列型)や0xで始まる文字(数値型、文字列型)は、それぞれ
8進数、16進数として読み取って10進数に変換して返してきます。
常に10進数として読んでくれると思ってたら変な数字が出る事がありますので、
8進数、16進数などを扱わないプログラムでは、偶発的なミスを避ける為に
var str = '92age'; //文字列型 alert( parseInt(str) ) var str = '092age'; //文字列型 alert( parseInt(str) ) var str = '092age'; //文字列型 alert( parseInt(str,10) ) var str = '0x92a'; //文字列型 alert( parseInt(str) ) aも16進数では数字ですから、aまで含めて2346が戻ってきます。 var str = '0x92a'; //文字列型 alert( parseInt(str,10) ) 数字以外の文字が混ざってなくても同じ結果です。 この様に単に文字列型を数値に変換する物ではないので、日付などで頭に0が付いた物を 0を外した普通の数字にしようとしてpaserInt(数字)だけにしてしまうと8進数として読み取った10進数が戻ってくる事になってしまいます。 きちんとparseInt(数字,○進数)の様に意図的に指定してやる事が日頃の癖で必要です。 ユーザー入力などを扱う場合は特に。 基本的に数字と文字が混在する値をいきなりparseInt()するのも雑で強引ではありますけど・・。 あらゆる場合を検証していませんが便利なのが、*1 です。 var str = '0205'; //文字列型 alert(str + ' は ' + typeof str + '型') ; str = str*1; alert(str + ' は ' + typeof str + '型' ) var str = '0205night'; //文字列型 alert(str + ' は ' + typeof str + '型') ; str = str*1; alert(str + ' は ' + typeof str + '型' ) NaNになるので*1をしてNaNになれば数値として扱えない文字と言う事になります。 ま、isNaNで調べれば済む話ですが・・
数値を文字列に変える場合には、 + '' を使って済ませるケースがあります。 |
専用ページから申し込むと So-netより高い3万円CB
案ずるより産むが易し
使ってみれば疑問も解決 XREA+ (plus) 206円/月 ( お試し7日間 ) CORE SERVER 428円/月 ( お試し15日間 ) ロリポップ 270円/月 ( お試し期間10日間 ) ヘテムル 1620円/月 ( お試し期間15日間 ) さくら 129円/月 ( お試し期間2週間 ) |
|||||||
【 PR 】 楽天カード入会でもれなく2000pt(2000円相当)が無料プレゼント さらに
ENEOSでの給油はポイント2倍! ネットでも日常でもお得な生活 【 PR 】
|