dポイントプレゼントキャンペーン実施中!

// function
function test(x) {
return x + 1;
}

// arrow function 引数なし (かっこがいる)
const test = () => 1; // 出力の式が一行の場合はreturnは不要

// arrow function 引数1つ (かっこいらない)
const test = x => x + 1;

// arrow function 引数2つ以上 (かっこいる)
const test = (x, y) => x + y + 1;

2 つ質問があります。
1 つは書き方を覚えにくい、覚えやすい方法はないのですか ?

2 つ目以下です。

アロー関数
1. this を持ちません。
2. arguments を持ちません。
3. new で呼び出すことはできません。
4. (super も持っていません。が、私たちはまだそれを学んでいませんでした。チャプター クラスの継承 で学習しましょう)。
これは、独自の “コンテキスト” を持たず、むしろ現在のコンテキストで動作するコードの小さい部品を意味するためです。
そして、そのようなユースケースで本当に輝きます。

普通にこれまでの関数を使えば良いと思うのですが
上記 2 の意味がわかりませんが、
上記以外の状況で、短く書きたい時に使うのがアロー関数ですか ?

質問者からの補足コメント

  • うーん・・・

    function map() {
    console.log('サンプル');
    }

    上記はアロー関数になりますか ?

      補足日時:2021/09/26 13:57

A 回答 (2件)

こんにちは



アロー関数は、通常の function文の制限付きのショートハンドです。
制限の内容は、ご質問文に記載の項目などです。

this値を参照できないので、No1様がご指摘のように、無名関数で利用されることが多いようですが、名前付き関数定義にも使うことは可能です。
ただし、class やオブジェクトのメソッド定義には向いていないように思います。(thisが参照できないので)
https://developer.mozilla.org/ja/docs/Web/JavaSc …


>上記 2 の意味がわかりませんが、~
例えば、引数の総和を求める関数を考えたとして、
function sigma(){
let sum = 0;
for(const v of arguments) sum += v;
return sum;
}
console.log( sigma(1, 2, 3) ); // 6
console.log( sigma(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ); // 55
のようなことができないという意味でしょう。

とは言え、上記の内容であればアロー関数でも記述は可能ですけれど…
const sigma2 = (...args) => {
let sum = 0;
args.forEach(v =>{ sum += v });
return sum;
}


>上記はアロー関数になりますか ?
例えば、
const map = () => { console.log('サンプル') };
map();
とか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
知識が膨らみました。

お礼日時:2021/09/26 19:11

agurmentsというのは一般的に考えて引数のことですよね



アロー関数はどちらかというとmapやfilterなどのようなコールバック関数によく使われ便利ですので覚えておいた方が良いですよ
array.map(x => x * 2)


const test = x => x + 1;のような使い方をする人もいますがただ関数を書きたいだけなら普通の関数を使った方が私は見やすいので普通の関数を書くときにはアロー関数は使わないですね

私の場合の話ですが
    • good
    • 0
この回答へのお礼

ありがとうございます。
わかったような気がします。

お礼日時:2021/09/26 19:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!