僕はArrow functionが読めない
僕はArrow functionが読めない:
RubyからJavascriptに手を広げている時、Rubyに比べてJSはコードが読みにくいと感じた。
特に
Javascriptを初めたばかりの方
Arrow functionは
Anonymous functions usually don't have a named
1については、メリットが理解しやすいが、2については文章を見ても直ぐにはしっくり来なかった。
2について具体例を出して考えていく。
ここでは関数名に
次は、1秒後にconsoleの中身が返ってくるように
上記の例では、
結果は同じである。
もし、無名関数ではなく、固有の名前を与えたいなら以下のように記述してあげれば良い。
次に、配列の数字に1を加えるメソッドを例に考える.
上記の例は
mapメソッドの引数に addOneの中身を記述すれば、更に短く記述が出来る。
Arrow functionに渡す
Arrow functionのbodyが1つのreturn文の時は
同じ表現を省略してかなり短く記述することが可能だ。
はじめに
RubyからJavascriptに手を広げている時、Rubyに比べてJSはコードが読みにくいと感じた。特に
Arrow function(無名関数)
についてはしっくり理解できるまで時間がかかったので、同じ道を通るかもしれない人に向けて記録を残しておこうと思う。 また、関数で頻繁に使用されている、省略記法が基礎が出来ていない状態で障害になっていたと感じる。
対象となる読者
Javascriptを初めたばかりの方
Arrow functionの利点
1. 短く記述出来る
function(){...} vs. () => {...}
2. 関数名を記述しなくて良い
Arrow functionは Anonymous
である。Anonymous functions usually don't have a named
identifier
1については、メリットが理解しやすいが、2については文章を見ても直ぐにはしっくり来なかった。
2について具体例を出して考えていく。
function blastoff() { console.log("3...2...1..blastoff!"); } blastoff();
結果 => 3...2...1..blastoff!
blastoff
という固有の名前がつけられている。次は、1秒後にconsoleの中身が返ってくるように
setTimeout()メソッド
を例に考える。setTimeout(function() { console.log("3...2...1..blastoff!"); }, 1000)
結果 => 3...2...1..blastoff!
blastoff
の名称を用いた関数の呼び出しは行なっていないが問題なく動作する。Arrow function
を用いると以下のように記述出来る。setTimeout(() => { console.log("3...2...1..blastoff!"); }, 1000)
もし、無名関数ではなく、固有の名前を与えたいなら以下のように記述してあげれば良い。
const blastoff = () => { console.log("3...2...1..blastoff!"); } blastoff()
結果 => 3...2...1..blastoff!
let points = [10, 11, 12] let addOne = function(element) { return element + 1; } points = points.map(addOne); console.log(points)
結果 => [11, 12, 13]
Arrow function
を用いると以下のように記述出来る。let points = [10, 11, 12] let addOne = () => { return element + 1; } points = points.map(addOne);
let points = [10, 11, 12] points = points.map((element) => { return element + 1; })
引数
が1つの場合は、 ()
を省略出来る。let points = [10, 11, 12] points = points.map(element => { return element + 1; })
{}
及び return
を省略できる。let points = [10, 11, 12] points = points.map(element => element + 1)
コメント
コメントを投稿