Javascriptでfunction(){}
と書くのをアロー関数()=>{}
と書ける、と知ってこれは便利。
かっこいいと使っていたら、場合によっては思ったように動かないことがわかりました。
次のサンプルプログラムをやってみて下さい。
https://kalz2q.github.io/jsdemo/this.html
ここでは、2つのテキストボックスがあって、その中をマウスでクリックするとそれを感知して「フォーカスされました」と表示されます。
<input type="text" class="textbox" value="お名前" > <input type="text" class="textbox" value="メールアドレス" >
スクリプトはこんな感じ。正確にはデベロッパーツールで見てください。
<script> $(()=>{ $(".textbox").focus(function (){ $(this).val("フォーカスされました!"); }); }); </script>
これの
function (){}
を()=>{}
とすると、thisの中身が変えられなくなって「フォーカスされました」と表示されなくなります。
var that = this
とかでどうにかならないかと思ったのですがいまのところすなおにfunction
と書いた方がいいみたい。