2017年1月14日土曜日

JavaScript let

ES6で追加になったJavaScript letの例として下記のコードが出てた
var list = document.getElementById("list");

for (let i = 1; i <= 5; i++) {
  let item = document.createElement("li");
  item.appendChild(document.createTextNode("Item " + i));

  item.onclick = function (ev) {
    console.log("Item " + i + " is clicked.");
  };
  list.appendChild(item);
}

letのところをvarにすると、どの行をクリックしても"Item 6 is clicked."となってしまう。
letなら上手くいく。

さてwindows7あたりのIEだとまだletがサポートされてなくて上手くいかない。
  a="Item " + i + " is clicked."
  item.onclick = function (ev) {
    console.log(a);
  };
 なんてすると、なぜか上手く動いてしまう。IEの不具合だとおもう。現在のchrom等のブラウザだと上手くいかない。

昔書いたコードにたまたま動いているやつがいて、ブラウザが新しくなると動かなくなるるのではないかとヒヤリとしている。

昔の環境での正解はなんだろう。タグのプロパティー(例えばvalue)としてiの値を埋め込んでやり、実行時に読み出すのかな。

0 件のコメント:

コメントを投稿