---
# System prepended metadata

title: javaScript　基礎編２（学習日　9/11）（関数と宣言、式と文、条件分岐、ループと反復処理）
tags: [JavaScript]

---

# javaScript　基礎編２（学習日　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`

