UdacityのES6 - JavaScript Improvedコースを、受講しながらメモしていきます。
Lesson2: Functions
Arrow Functions
アロー関数(Arrow Function Expression)。匿名関数を簡潔に書くための式。
// 従来の記法
const upperizedNames = ['Farrin', 'Kagure', 'Asser'].map(function(name) {
return name.toUpperCase();
});
// アロー関数を使用
const upperizedNames = ['Farrin', 'Kagure', 'Asser'].map(
name => name.toUpperCase();
);
どちらも結果は同じ。ちなみにmap
メソッドは、配列のそれぞれの要素に対して何らかの処理を行い(ここがfunctionの部分)、その処理の結果を要素に持つ、新しい配列を返す。
注意点
・引数が1つのとき、_ => foo
と書く慣習がある。
アンダースコアはただの変数名であり、「受け取るけど捨てる引数」という意味が込められているっぽい(Scalaにアンダースコアを使った構文があるらしく、それの影響…?)。
・関数部分が2行以上の場合、{}
で関数部分を覆ってやり、return
を明記する必要がある。
アロー関数における「this」
通常のfunctionにおけるthisは、functionがどう呼び出されたか、によって参照先が動的に変化する。
アロー関数におけるthisは、functionがどこで呼び出されたかによって参照先が動的に変化する。
…まだ理解しきっていないため、MDNを参照するように。
Default Function Parameters
引数にデフォルト値を代入できるようになった。仮引数。
function greet(name = 'Student', greeting = 'Welcome')
のように書けば、nameやgreetingに引数が渡されなくとも、それぞれ'Student'と'Welcome'が代入される
Classの基本
分量が多いので、Javaとの違いだけ。
Class is just a function. classはあくまでfunctionにすぎないよ、ということを強調していた。
typeof ClassHoge
の結果はfunction
。
JavaScriptのコンストラクタは、constructor()
で定義する。
クラスの中で定義されたメソッドは、prototype
オブジェクトと解釈され、継承可能。