2009年6月25日木曜日

今日はまったJavaScript

使い慣れてない言語はだめだね、今日はまったバグはJavaScript
数値の配列を GM_setValue("hoge", data.join(",")); 見たいにして保存しておいて、data = GM_getValue("hoge","").split(","); で取り出して使ってたんだけどそこでvar hoge = data[1] + 1; とかして使ってたんだけど、これdata[1] = 1 だと hoge = "11" になるのねorz
数値を少しずつ増やすようなコードのつもりで1桁ずつ増えてた・・・型の無い言語はこういうことがおきるのか、なんか防ぐ方法あるん?気をつけるしかないのか?

2 件のコメント:

Otchy さんのコメント...

型がないわけじゃなくて、型が見えないってイメージした方が分かりやすいかも。

var data = "1,1,1".split(",");
は文字列を分割しているから、あくまで文字列の配列になるというわけ。
parseInt(data[1]) + 1 なら 2 になる。

慣れてくると、見えない型を意識しながら書けるようになるよ。

Chishow さんのコメント...

ちょっと前に似たようなミスをして理解はしてたんだけど、ついやらかしてしまった感じなんだよねぇ
普段使ってる言語ならエラーでとまってすぐ気づくのにこの言語はとまらないので・・・
文字列連結に関してはPerlみたいに . 演算子でつなぐとか別のにしてくれればよかったのになぁ