プログラミング基礎

# JavaScript 基礎知識と非同期処理の用語解説

---

## データ型と変数

### 数値 (Number)
- **説明**: 数字を扱うデータ型。整数や小数を表します。
- **重要なポイント**: 浮動小数点演算で誤差が生じることがあります。
- **例**:
  ```javascript
  let price = 19.99; // 商品の値段
  let quantity = 3;  // 購入数
  console.log(price * quantity); // 合計額を計算

### 文字列 (String)

- **説明**: テキストを表すデータ型。名前やメッセージなどを扱う。
- **例**:

    ```javascript
    let firstName = "太郎";
    let lastName = "山田";
    console.log(firstName + " " + lastName); // フルネームを出力
    
### ブール値 (Boolean)

- **説明**: 真 (true) または偽 (false) の値を持つデータ型。条件分岐で使用。
- **例**:
    ```javascript
    let isStudent = true; // 学生かどうか
    if (isStudent) {
      console.log("学生割引が適用されます");
    }

### 配列 (Array)

- **説明**: 複数のデータを順序付きで格納するデータ型。
- **例**:

    ```javascript
    let colors = ["赤", "青", "緑"];
    console.log(colors[1]); // "青" を出力（インデックスは0から始まる）



### オブジェクト (Object)

- **説明**: データを「キー」と「値」のペアで格納するデータ型。名前を渡さなくても「ゲストさん」と呼んでくれるお助け機能だよ！
- **例**:

    ```javascript
    let user = {
      name: "太郎",
      age: 20,
      isStudent: true
    };
    console.log(user.name); // "太郎" を出力

## 制御構造

### 条件分岐 (if, else)

- **説明**: 条件に応じて異なる処理を実行する構造。
- **例**:

    ```javascript
    let score = 85;
    if (score >= 90) {
      console.log("優秀");
    } else if (score >= 70) {
      console.log("合格");
    } else {
      console.log("不合格");
    }

### ループ (for, while)

- **説明**: 繰り返し処理を行う構造。

### forループ

- **例**:

    ```javascript
    for (let i = 0; i < 5; i++) {
      console.log(i); // 0, 1, 2, 3, 4
    }



### whileループ

- **例**:

    ```javascript
    let count = 0;
    while (count < 3) {
      console.log(count);
      count++;
    }

## 関数の基礎

### 関数の定義と呼び出し

- **説明**: 処理をまとめて再利用できる単位。
- **例**:

    ```javascript
    function greet(name) {
      return `こんにちは、${name}さん`;
    }
    console.log(greet("太郎")); // "こんにちは、太郎さん"



### スコープ (Scope)

- **説明**: 変数の有効範囲。ローカルスコープとグローバルスコープがある。
- **例**:

    ```javascript
    let globalVar = "グローバル";
    
    function example() {
      let localVar = "ローカル";
      console.log(globalVar); // "グローバル"
      console.log(localVar); // "ローカル"
    }
    example();
    // console.log(localVar); // エラー：localVarは関数外では無効

## ES6以降の新機能

### アロー関数

- **説明**: 簡潔に書ける関数構文。
- **例**:

    ```javascript
    const add = (a, b) => a + b;
    console.log(add(2, 3)); // 5



### テンプレートリテラル

- **説明**: 文字列の中に変数や式を埋め込むことが可能。文章の中に、変数（なまえや数字みたいなデータ）を埋め込むのが簡単になるよ！
- **例**:

    ```javascript
    let name = "太郎";
    let age = 20;
    console.log(`名前: ${name}, 年齢: ${age}`);



### デフォルト引数

- **説明**: 引数が渡されなかった場合のデフォルト値を設定。
- **例**:

    ```javascript
    function greet(name = "ゲスト") {
      return `こんにちは、${name}さん`;
    }
    console.log(greet()); // "こんにちは、ゲストさん"

## 非同期処理の基本

### Promise

- **説明**: 非同期処理の成功と失敗を扱うオブジェクト。「うまくいったらこうして！失敗したらこうして！」とお願いをする仕組みだよ。
- **例**:

    ```javascript
    let promise = new Promise((resolve, reject) => {
      let success = true;
      if (success) {
        resolve("成功しました");
      } else {
        reject("失敗しました");
      }
    });
    
- **例**:

    ```javascript
    promise
    .then((result) => console.log(result)) // "成功しました"
    .catch((error) => console.log(error));

### async/await

- **説明**: 非同期処理を同期的に記述できる構文。インターネットからデータを取ってくるときとか、少し時間がかかるよね？
そのとき、途中で止まらずに次の作業を続ける仕組みが「非同期処理」だよ。
- **例**:

    ```javascript
    async function fetchData() {
      let response = await fetch("https://api.example.com/data");
      let data = await response.json();
      console.log(data);
    }
    fetchData();