1、なぜfunction関数では動いて、アロー関数では動かなかったのか
functionによる関数の定義のタイミングとアロー関数による定義のタイミングが異なるからです
ただし、プログラミングは順次実行が多いので前もって定義しておく方が一般的かと思いますので、
基本的に前もって定義しておくことに慣れておいた方がいいかと思います。
(プログラムを追いかける場合も上で定義されたり下で定義されたりすると一貫性がなく読むのが辛くなると思います)
2、アロー関数では使用するメソッドは使用前に定義するものなのか
1に記載したので省略
3、2だとすればnew Promise内で呼んでいるtest関数はなぜエラーにならないのか
getDataが呼び出されているタイミングによります。
testまで定義された後、getDataが呼び出されたのであれば当然エラーにはなりません
おそらくですが、即時実行にした場合はエラーになると思います
PS.
async function getData() {
const userList = [
{ id: 1, first_name: '優', family_name: '大木', affilication: 'TechTrain', is_student: false },
{ id: 2, first_name: '太郎', family_name: '山田', affilication: 'HogeHoge大学', is_student: true }
];
const result = await new Promise(resolve => setTimeout(() => resolve(test(userList)), 3000));
- return await result // ←awaitの意味がない
+ return result
}
testをアロー関数に直すとこのレベルでもいいかなと
const test = (data) => data.map((d) => ({
...d,
full_name: `${d.family_name} ${d.first_name}`,
}));