# javaScript 基礎編2(学習日 9/11)(関数と宣言、式と文、条件分岐、ループと反復処理) ## 1. 関数と宣言 a. 関数の書き方の基本 関数はfunctionを用いる。 (例)2日間の野球の入場者数(spectator)が、4万人、4万5千人の時の合計入場者数 ```javascript= function plus(a,b){ total=a+b return total; }; const spectator = plus(40000, 45000); console.log(spectator); ``` b. 様々な関数 * function double(数値) 入力数値の2倍を返す。 * return(返り値)無し undefinedを返す。 * 引数が関数で定義された数より少ない・多い 引数がある分までは通常処理を続け、余った仮引数にはundefinedが入る。 逆に多い場合は、多すぎる分はカット(無視)される。 Javaの場合、型の不一致でいずれもコンパイルエラーを起こす。 * デフォルト引数<ES2015以降対応> 関数側にデフォルト引数を設定しておき、呼び出された際に引数が無い場合、デフォルト引数で処理を行う。 * 可変長引数 引数の数の制限なく受け取れる関数。Math.max(...args)等。 c. 関数の扱い 関数は関数オブジェクトとして扱われる。また、同じ関数宣言は上書きされる。 * 関数を呼び出す場合 関数名()で呼び出す。 * 関数をオブジェクトとして参照する場合 関数名だけで呼び出す(かっこ無し) 関数を値として扱うことができる。(ファーストファンクション) ```javascript= function fn() { console.log("fnが呼び出されました"); } // 関数`fn`を`myFunc`変数に代入している const myFunc = fn; myFunc(); ``` d.関数式 関数を値として代入可能である。 ```javascript= const func = function() { return "functionが呼び出されました"; }; ``` 一方で、Arrow Function型という、矢印のように表す書き方もある。 ```javascript= const aikatsu = (aikatsu,stars,friends,onparade) =>{ return aikatsu+stars+friends+onparade }; ``` e.コールバック関数 コールバック関数は、関数処理内での関数呼び出しが可能である。 コールバック関数を引数として用いる関数を高階関数という。 f.メソッド オブジェクトのプロパティとしての関数のこと。 ## 2. 式と文 * 式 実行することで結果となる値(評価値)を生み出し、評価値を変数に代入できるもの。 (例) 数式、関数式 * 文 処理の区切り。文末にセミコロンをつける。 (例) if文、for文 * 式文 式と文が一つになったもの。 * ブロック文 {}で囲んだ文。複数の文を中に記述できる。ブロック文の文末はセミコロン不要である(但し、変数を代入する式の場合は必要。)。 ※ブロック文の中に書いた変数宣言は、ブロック文の中のみ有効である。(ブロックスコープ Javaでいうローカル変数のようなもの) ## 3. 条件分岐・ループ・反復処理 基本的にJavaの扱いと同じ。 但し、true,falseの判定は、JavaScriptの判定ルールに基づく。(基礎編1 2.6参照) 以下、確認しておきたい処理のみ取り上げる。 a. switch文 条件分岐パターンが複数ある文。 (例) ```javascript= switch (式) { case ラベル1: // `式`の評価結果が`ラベル1`と一致する場合に実行する文 break; case ラベル2: // `式`の評価結果が`ラベル2`と一致する場合に実行する文 break; default: // どのcaseにも該当しない場合の処理 break; } // break; 後はここから実行される ``` b.for eachメソッド 配列の要素ごとに反復処理を行うメソッド。 コールバック関数を利用する。 ```javascript= const array = [1,2,3]; array.forEach(value =>{ console.log(value); }); ``` c. someメソッド 配列の要素をテストするメソッド。 配列内で一つでも要素を満たせばその時点で反復処理を終了しtrueを返す。 ```javascript= function isEven(num) { return num % 2 === 0; } const array = [1,2,3]; const evenCheck = array.some(isEven); console.log(evenCheck); ``` d. breakとcontinue * break文 繰り返しの脱出に用いる。 * continue文 ループ処理を途中で打ち切り、ループの先頭に戻る際に用いる。 e.特殊なfor文 * for in文 オブジェクトのプロパティを列挙するfor文 * for of文<ES2015以降対応> 配列などの内容を繰り返すfor文。Javaで言う拡張for文 ```javascript= const array = [1,2,3]; for (const value of array){ console.log(value); } ``` ###### tags: `JavaScript`