この記事について
これはJavascript初学者(現在progateで学習中)がアウトプットの場として書いている記事なので、間違いがあったらご指摘ください。また、Rubyを学習した後なのでRubyと比較して書いているかもしれないです。
アロー関数
関数の名前と言うよりは書き方といったほうがしっくりくると思います。
script.js
//これが従来の書き方
const greet = function(){
console.log("こんにちは")
};
//"function()"を"()=>"と省略した書き方をアロー関数と言います。
const greet = ()=>{
console.log("こんにちは")
};
引数
Rubyと同様に関数を呼び出した時に関数に渡す値のことです。同じ関数でも引数によって処理の結果が変わります。
script.js
//()の中に引数名を入れます。定数(値)の値が引数名に代入されます。
const greet = (name)=>{
console.log(`こんにちは${name}`)
};
//関数の呼び出し(定数名(値))
greet("赤ちゃん");
//コンソール上に"こんにちは赤ちゃん"と出力
greet("さようなら");
//コンソール上に"こんにちはさようなら"と出力
戻り値
呼び出した関数の処理の結果を"戻り値"と言います。
script.js
const add = (a,b)=> {
return a+b;
//"return"を書くことで、aとbを足した値が戻り値として返される
console.log("足し算しました");
//これは実行されない。
};
const sum = add(1,3);
console.log(sum);
if文で使用するような条件式を関数に書くと真偽値が戻り値として返されます。
script.js
const search = (a)=> {
return a%2 === 0;
//returnの値がtrueかfalseかで返される。
};
console.log(search(6))
//trueと表示される。
スコープ
関数の引数や関数内の変数及び定数は、その関数内でしか使用できません。関数の外で定義した変数及び定数は関数内でも使用する事ができます。関数のみならず、条件式(if文)や繰り返し文(while文)の{}内の構文にもスコープがあり、構文中で定義した変数及び定数は構文外では使用できない。
script.js
const greet = ()=> {
const name = "太郎";
//この中では定数nameが使用できる。
};
//関数の外では定数nameを使用できない。
const math = "数学";
const subject = ()=> {
console.log(math)
//関数外で定義しているので定数mathを内外問わず使用できる。
};
const number = 2;
if(number%2 === 0) {
const value = "偶数";
//この構文中でのみ定数valueを使用できる。
}
感想
引数や戻り値、スコープはRubyでも扱われているのですんなり理解できました。アロー関数はプログラミングスクールでも学習していない新規の内容でした。引き続きJavascriptの勉強を進めていきたいです。