リファレンス
JS.next, MDN を読んでアロー関数を学びました。
実際にいろいろ書いてみて無名関数式の機能縮小版というイメージを持ちました。
制限事項
(1) アロー関数は名前付き関数式を指定できない
アロー関数は名前付き関数式のように関数名を指定する事はできません。
関数は変数名で参照する必要がある為、名前が破壊される可能性を排除できません。
JavaScript
1var fn = (i) => { return i < 10 ? fn(++i): i; }, 2 hoge = fn; 3 4console.log(fn(0)); // 10 5fn = null; 6hoge(0); // TypeError: fn is not a function
名前付き関数式では次のように書けます。
JavaScript
1var hoge = function hoge () { 2 console.log(hoge); // ここで参照する名前は "function hoge" であり、関数名は不変(改変できない) 3}; 4var foo = hoge; 5hoge = null; // 変数 hoge を破壊する 6foo(); // function hoge () { console.log(piyo); }
(2) アロー関数は this 値を束縛できない
this
値は関数定義時に既に束縛されている為、Function#call
は無効です。
this
値を束縛する方法は存在しない…と思います(自信なし)。
JavaScript
1var fn = (selectorText) => { return this.document.querySelector(selectorText); }; 2 3fn('p'); 4fn.call(document.querySelector('iframe').contentWindow, 'p'); // this 値を束縛できない
質問内容
理屈は分かりますが、この2つの制限が大きく感じるので、仕様の範囲内で出来る事がないか考えてしまいます。
この2つの制限事項は私の認識で正しいのでしょうか。
間違いでしたらどんな方法で制限を回避できるでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/08 14:44
2016/01/08 21:15
2016/01/08 23:02