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 件のコメント:

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

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

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

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

    返信削除