今まで、自分で JavaScript を触ることがあんまりなかったので、この中途半端な「型への寛容さ」に苛つきながらコード書いてます(^^;
変数宣言時に特に型を宣言することなく使えるのは Perl などのスクリプト言語と一緒だけど、なんか中途半端なんだよなあ>JavaScript
例えば、
var a = 100;var b = 50;
と変数を宣言して、
var c = a + b;
とかすると、変数 c には '10050' って文字列として結合されたものが代入されちゃう。
Perl のように、「.(文字の結合)」と「+(数字の足し算)」と言うように演算子が個別に用意されてないから仕方ないんだけど、
こういう時、いちいち
var c = parseInt(a) + parseInt(b);
とか書くの面倒くせえ!!
しかも、その後でこの変数 c を正規表現使って、
c = c.replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
こんなふうに「3桁ずつカンマを打つ」処理しようとしたら、「オブジェクトは'replace'プロパティまたはメソッドをサポートしていません。」のエラーが・・・とほほ・・・
これ、変数 c が「数値型」の変数になってるためで、例えば、
c = c + ""
みたいな「文字列としての計算」を replace メソッドを使う前にダミーでしてやればエラーは出ない。
replace メソッドが文字型の変数しか受け付けないというわけだ。
中途半端~(^^;
そんなん、replace メソッドが使われた時は、自動で文字型にキャストすればええやん(^^;
まったく、JavaScript の、この変数型について「寛容」なのか「厳格」なのかわからないところが嫌い(^^;
「厳格」ではないけど「狭量」って感じか・・・(^^;
コメントする