diff --git a/public/docs/javascript/0-intro/2-0-environment.md b/public/docs/javascript/0-intro/2-0-environment.md index 5b4ab82a..79194b80 100644 --- a/public/docs/javascript/0-intro/2-0-environment.md +++ b/public/docs/javascript/0-intro/2-0-environment.md @@ -15,7 +15,7 @@ JavaScriptはどこで動くのでしょうか? かつてはブラウザの中 * **Webブラウザ (クライアントサイド):** * DOM (Document Object Model) 操作により、HTML/CSSを動的に書き換えます。 - * `window` オブジェクトがグローバルスコープです。 + * `window` [[オブジェクト]]がグローバルスコープです。 * セキュリティ上の制約(サンドボックス)があり、ローカルファイルへの直接アクセスなどは制限されています。 * **Node.js (サーバーサイド):** diff --git a/public/docs/javascript/0-intro/4-1-repl.md b/public/docs/javascript/0-intro/4-1-repl.md index 790ea5fc..3523555a 100644 --- a/public/docs/javascript/0-intro/4-1-repl.md +++ b/public/docs/javascript/0-intro/4-1-repl.md @@ -22,4 +22,5 @@ undefined 3 ``` -※ `undefined` は `console.log` 関数の戻り値が表示されています。 +> [!TIP] +> [[`undefined`]] は `console.log` 関数の戻り値が表示されています。 diff --git a/public/docs/javascript/0-intro/4-3-browser.md b/public/docs/javascript/0-intro/4-3-browser.md index dba004fb..93857c66 100644 --- a/public/docs/javascript/0-intro/4-3-browser.md +++ b/public/docs/javascript/0-intro/4-3-browser.md @@ -26,5 +26,6 @@ question: ブラウザの開発者ツール(Consoleタブ)にメッセージが表示され、ポップアップウィンドウが出れば成功です。 -my.code(); のチュートリアルでは主にJavaScriptの文法や基本的な機能を中心に扱います。 +> [!NOTE] +> my.code(); のチュートリアルでは主にJavaScriptの文法や基本的な機能を中心に扱います。 HTMLやCSSとあわせたウェブアプリケーション開発の基礎については [ut.code(); Learn](https://learn.utcode.net) で学ぶことができます。 diff --git a/public/docs/javascript/1-basics/1-0-variable.md b/public/docs/javascript/1-basics/1-0-variable.md index 0d12f8bc..e7d2a4d9 100644 --- a/public/docs/javascript/1-basics/1-0-variable.md +++ b/public/docs/javascript/1-basics/1-0-variable.md @@ -8,6 +8,11 @@ question: - varを使うべきではないとありますが、varを使うとどのような悪いことが起こるのですか? - 巻き上げ(Hoisting)とは、具体的にどのような現象ですか? - '`console.log("let output:", blockScoped);` がReferenceErrorになるのはなぜですか?' +term: + - let + - const + - var + - 変数 --- ## 変数宣言: let, const, var @@ -20,8 +25,9 @@ ES6(2015年)で導入された `const` と `let` は、C++やJava、C\#な * **const**: 再代入不可能な変数を宣言します。定数だけでなく、再代入しない変数はすべてこれで宣言します。 * **let**: 再代入可能な変数を宣言します。ループカウンタや、状態が変わる値に使用します。 - -なぜ `var` を使うべきではないのでしょうか。それは `var` が**関数スコープ**であり、意図しない変数の共有や「巻き上げ(Hoisting)」によるバグを引き起こしやすいからです。 +> [!WARNING] +> もう一つの変数を宣言する古いキーワードとして `var` があります。 +> `var` は**関数スコープ**であり、意図しない変数の共有や「巻き上げ(Hoisting)」によるバグを引き起こしやすいため、現在は `const` や `let` を使うことが推奨されています。 以下のコードで、スコープの違いを確認してみましょう。 diff --git a/public/docs/javascript/1-basics/2-0-primitive-type.md b/public/docs/javascript/1-basics/2-0-primitive-type.md index d0c4a815..f44c5241 100644 --- a/public/docs/javascript/1-basics/2-0-primitive-type.md +++ b/public/docs/javascript/1-basics/2-0-primitive-type.md @@ -6,11 +6,14 @@ question: - プリミティブ型とは、ざっくり言うとどういう値のことですか? - プリミティブ型がイミュータブル(変更不可)というのは、どういう状態を指しますか? - SymbolやBigIntは、通常の開発でどのくらいの頻度で使うものですか? +term: + - プリミティブ + - プリミティブ型 --- ## データ型: プリミティブ型 -JavaScriptは動的型付け言語であり、変数は特定の型に紐付きませんが、値自体は型を持っています。JavaScriptの値は大きく分けて「プリミティブ型」と「オブジェクト(参照)型」に分類されます。 +JavaScriptは動的型付け言語であり、[[変数]]は特定の型に紐付きませんが、値自体は型を持っています。JavaScriptの値は大きく分けて「プリミティブ型」と「オブジェクト(参照)型」に分類されます。 プリミティブ型はイミュータブル(変更不可)であり、以下の7種類が存在します。 @@ -19,7 +22,7 @@ JavaScriptは動的型付け言語であり、変数は特定の型に紐付き 3. **Boolean**: `true` または `false` 4. **undefined**: 「値が未定義である」ことを表す型 5. **null**: 「値が存在しない」ことを意図的に示す型 -6. **Symbol**: 一意で不変な識別子(主にオブジェクトのプロパティキー用途) +6. **Symbol**: 一意で不変な識別子(主に[[オブジェクト]]のプロパティキー用途) 7. **BigInt**: `Number`型では表現できない巨大な整数を扱う型(末尾に `n`) この章では、まず最もよく使う `String` / `Number` / `Boolean` / `undefined` / `null` を順に見ていきます。`Symbol` と `BigInt` は用途が限定的なため、ここでは「プリミティブ型の一種」であることだけ押さえれば十分です。 diff --git a/public/docs/javascript/1-basics/2-1-string.md b/public/docs/javascript/1-basics/2-1-string.md index 4049c6de..d1e346d5 100644 --- a/public/docs/javascript/1-basics/2-1-string.md +++ b/public/docs/javascript/1-basics/2-1-string.md @@ -6,13 +6,18 @@ question: - シングルクォートとダブルクォートで文字列を囲むことの違いは何ですか? - テンプレートリテラルは、どんな場面で使うと便利ですか? - テンプレートリテラルの `${}` の中に計算式を書けますか? +term: + - 文字列 + - String + - string + - テンプレートリテラル --- ### 文字列(String) JavaScriptの文字列は、シングルクォート (`'`) またはダブルクォート (`"`) で作成します。 -また、バッククォート (`` ` ``) で囲む**テンプレートリテラル**を使うと、変数や式を文字列に埋め込めます。文字列の連結(`+`)より読みやすくなることが多いため、こちらを使うのが一般的です。 +また、バッククォート (`` ` ``) で囲む**テンプレートリテラル**を使うと、[[変数]]や式を文字列に埋め込めます。文字列の連結(`+`)より読みやすくなることが多いため、こちらを使うのが一般的です。 ```js-repl > const name = "Ada"; diff --git a/public/docs/javascript/1-basics/2-2-number.md b/public/docs/javascript/1-basics/2-2-number.md index 1aef07a8..99a3c317 100644 --- a/public/docs/javascript/1-basics/2-2-number.md +++ b/public/docs/javascript/1-basics/2-2-number.md @@ -6,6 +6,10 @@ question: - JavaScriptで整数と小数を区別しないのは、どういう意味ですか? - 除算や剰余など、基本的な計算はどのように書けば良いですか? - 小数計算で誤差が出ることがあるのはなぜですか? +term: + - 数値 + - Number + - number --- ### 数値(Number) @@ -35,4 +39,5 @@ undefined 0.30000000000000004 ``` -`0.1 + 0.2` のような小数計算で誤差が出るのは、JavaScriptが数値を内部的に2進数の浮動小数点として扱うためです。 +> [!TIP] +> `0.1 + 0.2` のような小数計算で誤差が出るのは、JavaScriptが数値を内部的に2進数の浮動小数点として扱うためです。 diff --git a/public/docs/javascript/1-basics/2-3-boolean.md b/public/docs/javascript/1-basics/2-3-boolean.md index b2492797..2f59067c 100644 --- a/public/docs/javascript/1-basics/2-3-boolean.md +++ b/public/docs/javascript/1-basics/2-3-boolean.md @@ -5,6 +5,12 @@ level: 3 question: - Boolean型はどんな場面で使いますか? - '`true` / `false` は文字列の `"true"` / `"false"` と何が違いますか?' +term: + - 真偽値 + - Boolean + - boolean + - "true" + - "false" --- ### 真偽値(Boolean) diff --git a/public/docs/javascript/1-basics/2-4-undefined-null.md b/public/docs/javascript/1-basics/2-4-undefined-null.md index 4b856986..7e721252 100644 --- a/public/docs/javascript/1-basics/2-4-undefined-null.md +++ b/public/docs/javascript/1-basics/2-4-undefined-null.md @@ -6,13 +6,16 @@ question: - undefinedとnullは、どう使い分けるのが良いですか? - 変数を宣言しただけの状態がundefinedになるのはなぜですか? - '`typeof null` が `''object''` になるのは本当に正しいのですか?' +term: + - "undefined" + - "null" --- ### undefined と null 他言語経験者が最初に混乱しやすいのが、この `undefined` と `null` の違いです。 -- **undefined**: JavaScriptエンジンが「値がまだない」ことを示すときに現れます(例: 宣言だけして代入していない変数)。 +- **undefined**: JavaScriptエンジンが「値がまだない」ことを示すときに現れます(例: 宣言だけして代入していない[[変数]])。 - **null**: プログラマが「ここには値がない」と明示したいときに代入します。 ```js-repl @@ -28,4 +31,5 @@ undefined 'object' ``` -`typeof null` が `'object'` になるのは、JavaScript初期から残っている歴史的な仕様です。`null` 自体はオブジェクトではなく、プリミティブ型の値です。 +> [!INFO] +> `typeof null` が `'object'` になるのは、JavaScript初期から残っている歴史的な仕様です。`null` 自体は[[オブジェクト]]ではなく、[[プリミティブ型]]の値です。 diff --git a/public/docs/javascript/1-basics/3-0-object.md b/public/docs/javascript/1-basics/3-0-object.md index 085f07b6..8748b936 100644 --- a/public/docs/javascript/1-basics/3-0-object.md +++ b/public/docs/javascript/1-basics/3-0-object.md @@ -6,17 +6,19 @@ question: - オブジェクト(参照型)とプリミティブ型は、メモリ上で具体的にどのように違うのですか? - JavaScriptでは関数もオブジェクトとありますが、これはどういうメリットがありますか? - キーと値のペアの集合、というのは具体的にどんなものですか? +term: + - オブジェクト --- ## データ型: オブジェクト型 -プリミティブ以外のすべての値は**オブジェクト(参照型)**です。これらはメモリ上のアドレス(参照)として扱われます。 +[[プリミティブ]]以外のすべての値は**オブジェクト(参照型)**です。これらはメモリ上のアドレス(参照)として扱われます。 主なオブジェクト型には以下があります。 * **Object**: キーと値のペアの集合(辞書、ハッシュマップに近い)。詳しくは[[./5]]で解説します。 * **Array**: 順序付きリスト。詳しくは[[./7]]で解説します。 - * **Function**: JavaScriptでは関数もオブジェクトであり、変数に代入したり引数として渡すことができます(第一級関数)。 + * **Function**: JavaScriptでは関数もオブジェクトであり、[[変数]]に代入したり引数として渡すことができます(第一級関数)。 ```js-repl > // Object: キーと値のペアの集合 diff --git a/public/docs/javascript/1-basics/3-1-const-object.md b/public/docs/javascript/1-basics/3-1-const-object.md index 0356d712..d9e7ff54 100644 --- a/public/docs/javascript/1-basics/3-1-const-object.md +++ b/public/docs/javascript/1-basics/3-1-const-object.md @@ -10,7 +10,7 @@ question: ### const とオブジェクトの変更 -重要な点として、`const` で宣言した変数は「再代入」ができませんが、中身がオブジェクトの場合、**プロパティの変更は可能**です。これは `const` が「参照先のメモリアドレス」を固定するものであり、ヒープ領域にあるデータそのものを不変にするわけではないためです。 +重要な点として、[[`const`]] で宣言した変数は「再代入」ができませんが、中身が[[オブジェクト]]の場合、**プロパティの変更は可能**です。これは [[`const`]] が「参照先のメモリアドレス」を固定するものであり、ヒープ領域にあるデータそのものを不変にするわけではないためです。 ```js:object_mutation.js const user = { diff --git a/public/docs/javascript/1-basics/4-0-equality.md b/public/docs/javascript/1-basics/4-0-equality.md index e68d9b59..7df51b79 100644 --- a/public/docs/javascript/1-basics/4-0-equality.md +++ b/public/docs/javascript/1-basics/4-0-equality.md @@ -7,6 +7,9 @@ question: - 「暗黙的な型変換」とは、具体的にJavaScriptが何をしているのですか? - '`1 == "1"` がtrueになるのは、どのようなプロセスでそうなるのですか?' - '`null == undefined` がtrueになるのは、特別なルールがあるのですか?' +term: + - 等価演算子 + - 厳密等価演算子 --- ## 演算子と等価性 (== vs ===) diff --git a/public/docs/javascript/1-basics/5-1-add-operator.md b/public/docs/javascript/1-basics/5-1-add-operator.md index 1779c9de..60fcae64 100644 --- a/public/docs/javascript/1-basics/5-1-add-operator.md +++ b/public/docs/javascript/1-basics/5-1-add-operator.md @@ -12,7 +12,7 @@ question: JavaScriptは文脈に応じて勝手に型を変換しようとします。 -`+` 演算子は、数値の加算だけでなく文字列の連結にも使われます。片方が文字列であれば、もう片方も文字列に変換されて連結されます。 +`+` 演算子は、[[数値]]の加算だけでなく[[文字列]]の連結にも使われます。片方が[[文字列]]であれば、もう片方も文字列に変換されて連結されます。 ```js-repl > 10 + 20 diff --git a/public/docs/javascript/1-basics/6-0-summary.md b/public/docs/javascript/1-basics/6-0-summary.md index 17bd1b0d..ed4470f4 100644 --- a/public/docs/javascript/1-basics/6-0-summary.md +++ b/public/docs/javascript/1-basics/6-0-summary.md @@ -7,7 +7,7 @@ question: [] ## この章のまとめ - * 変数は `const` をデフォルトとし、再代入が必要な場合のみ `let` を使う。`var` は使用しない。 - * プリミティブ型は値渡し、オブジェクト型(配列含む)は参照渡しである。 - * `const` で宣言したオブジェクトの中身は変更可能である。 - * 比較には必ず `===`(厳密等価演算子)を使用し、`==` による暗黙の型変換を避ける。 + * [[変数]]は [[`const`]] をデフォルトとし、再代入が必要な場合のみ [[`let`]] を使う。[[`var`]] は使用しない。 + * [[プリミティブ型]]は値渡し、[[オブジェクト]]型(配列含む)は参照渡しである。 + * [[`const`]] で宣言した[[オブジェクト]]の中身は変更可能である。 + * 比較には必ず `===`([[厳密等価演算子]])を使用し、`==` による暗黙の型変換を避ける。 diff --git a/public/docs/javascript/1-basics/6-1-practice1.md b/public/docs/javascript/1-basics/6-1-practice1.md index e3306933..c9a871d5 100644 --- a/public/docs/javascript/1-basics/6-1-practice1.md +++ b/public/docs/javascript/1-basics/6-1-practice1.md @@ -9,7 +9,7 @@ question: ### 練習問題1: テンプレートリテラル -`itemName` という変数に商品名(文字列)、`price` という変数に価格(数値)、`stock` という変数に在庫数(数値)をそれぞれ代入してください。その後、テンプレートリテラルを使って「商品: [商品名], 価格: [価格]円, 在庫: [在庫数]個」という形式の文字列を作り、`console.log()` で出力するコードを書いてみましょう。 +`itemName` という[[変数]]に商品名([[文字列]])、`price` という[[変数]]に価格([[数値]])、`stock` という[[変数]]に在庫数([[数値]])をそれぞれ代入してください。その後、[[テンプレートリテラル]]を使って「商品: [商品名], 価格: [価格]円, 在庫: [在庫数]個」という形式の[[文字列]]を作り、`console.log()` で出力するコードを書いてみましょう。 ```js:practice2_1.js ``` diff --git a/public/docs/javascript/1-basics/6-2-practice2.md b/public/docs/javascript/1-basics/6-2-practice2.md index eaa994d6..fe984f39 100644 --- a/public/docs/javascript/1-basics/6-2-practice2.md +++ b/public/docs/javascript/1-basics/6-2-practice2.md @@ -9,8 +9,8 @@ question: ### 練習問題2: constとオブジェクトの変更 -`const` を使って、`name`(商品名・文字列)と `price`(価格・数値)を持つ商品オブジェクト `product` を作成してください。 -次に、`price` を別の値に変更し、さらに `stock`(在庫数・数値)プロパティを新たに追加してから、`console.log()` でオブジェクトの内容を出力してみましょう。 +[[`const`]] を使って、`name`(商品名・[[文字列]])と `price`(価格・[[数値]])を持つ商品[[オブジェクト]] `product` を作成してください。 +次に、`price` を別の値に変更し、さらに `stock`(在庫数・[[数値]])プロパティを新たに追加してから、`console.log()` で[[オブジェクト]]の内容を出力してみましょう。 ```js:practice2_2.js ``` diff --git a/public/docs/javascript/2-control/1-1-if-truthy.md b/public/docs/javascript/2-control/1-1-if-truthy.md index 7b2b8d56..91b2716f 100644 --- a/public/docs/javascript/2-control/1-1-if-truthy.md +++ b/public/docs/javascript/2-control/1-1-if-truthy.md @@ -14,22 +14,24 @@ question: 基本的な `if` 文の構造はC言語やJavaと同様です。しかし、条件式における評価はJavaScript特有の**Truthy(真と見なされる値)**と**Falsy(偽と見なされる値)**の概念を理解する必要があります。 -厳密な `true` / `false` だけでなく、あらゆる値が条件式の中で真偽判定されます。 +厳密な [[`true`]] / [[`false`]] だけでなく、あらゆる値が条件式の中で真偽判定されます。 -**Falsyな値(falseとして扱われるもの):** +**Falsyな値([[false]]として扱われるもの):** - * `false` + * [[`false`]] * `0`, `-0`, `0n` (BigInt) * `""` (空文字) - * `null` - * `undefined` + * [[`null`]] + * [[`undefined`]] * `NaN` -**Truthyな値(trueとして扱われるもの):** +**Truthyな値([[true]]として扱われるもの):** * 上記Falsy以外すべて - * **注意:** 空の配列 `[]` や 空のオブジェクト `{}` は **Truthy** です(Pythonなどの経験者は注意が必要です)。 - * 文字列の `"0"` や `"false"` もTruthyです。 + +> [!WARNING] +> * 空の配列 `[]` や 空の[[オブジェクト]] `{}` は **Truthy** です(Pythonなどの経験者は注意が必要です)。 +> * [[文字列]]の `"0"` や `"false"` もTruthyです。 ```js-repl > if (0) { 'True'; } else { 'False'; } diff --git a/public/docs/javascript/2-control/1-2-switch.md b/public/docs/javascript/2-control/1-2-switch.md index b3db7012..926e3a78 100644 --- a/public/docs/javascript/2-control/1-2-switch.md +++ b/public/docs/javascript/2-control/1-2-switch.md @@ -11,7 +11,7 @@ question: ## `switch`文 -`switch` 文も標準的ですが、比較が **厳密等価演算子 (`===`)** で行われる点に注意してください。型変換は行われません。 +`switch` 文も標準的ですが、比較が **[[厳密等価演算子]] (`===`)** で行われる点に注意してください。型変換は行われません。 ```js:switch_example.js const status = "200"; // 文字列 diff --git a/public/docs/javascript/2-control/3-0-iteration.md b/public/docs/javascript/2-control/3-0-iteration.md index 1a920d30..61845227 100644 --- a/public/docs/javascript/2-control/3-0-iteration.md +++ b/public/docs/javascript/2-control/3-0-iteration.md @@ -13,5 +13,5 @@ question: | 構文 | 取得するもの | 対象 | 推奨ユースケース | | :--- | :--- | :--- | :--- | -| **`for...in`** | **キー (Key)** | Object | オブジェクトのプロパティ調査 | -| **`for...of`** | **値 (Value)** | Array, String, Map, Set | 配列やリストデータの処理 | +| **`for...in`** | **キー (Key)** | Object | [[オブジェクト]]のプロパティ調査 | +| **`for...of`** | **値 (Value)** | Array, [[String]], Map, Set | 配列やリストデータの処理 | diff --git a/public/docs/javascript/2-control/3-1-for-in.md b/public/docs/javascript/2-control/3-1-for-in.md index 1563ce1b..f22f81db 100644 --- a/public/docs/javascript/2-control/3-1-for-in.md +++ b/public/docs/javascript/2-control/3-1-for-in.md @@ -9,8 +9,8 @@ question: ### `for...in` ループ(プロパティ名の列挙) -`for...in` はオブジェクトの **キー(プロパティ名)** を列挙するために設計されています。 -配列に対して使用すると、インデックス("0", "1", ...)が文字列として返ってくるだけでなく、プロトタイプチェーン上のプロパティまで列挙してしまうリスクがあるため、**配列への使用は推奨されません**。 +`for...in` は[[オブジェクト]]の **キー(プロパティ名)** を列挙するために設計されています。 +配列に対して使用すると、インデックス("0", "1", ...)が[[文字列]]として返ってくるだけでなく、プロトタイプチェーン上のプロパティまで列挙してしまうリスクがあるため、**配列への使用は推奨されません**。 ```js:for_in_example.js const user = { diff --git a/public/docs/javascript/2-control/3-2-for-of.md b/public/docs/javascript/2-control/3-2-for-of.md index 46d3445a..269aaf63 100644 --- a/public/docs/javascript/2-control/3-2-for-of.md +++ b/public/docs/javascript/2-control/3-2-for-of.md @@ -12,7 +12,7 @@ question: ### `for...of` ループ(反復可能オブジェクトの走査) ES2015 (ES6) で導入された `for...of` は、**値(Values)** を反復します。 -配列、文字列、Map、Setなどの **Iterable(反復可能)** なオブジェクトに対して使用します。配列の中身を順番に処理したい場合は、こちらが正解です。 +配列、[[文字列]]、Map、Setなどの **Iterable(反復可能)** な[[オブジェクト]]に対して使用します。配列の中身を順番に処理したい場合は、こちらが正解です。 ```js:for_of_example.js const languages = ["JavaScript", "Python", "Go"]; @@ -37,11 +37,11 @@ A I ``` -> **Tips:** オブジェクトの中身を `for...of` で回したい場合は、`Object.keys()`, `Object.values()`, `Object.entries()` を使うのがモダンな手法です。 - -```js -const obj = { a: 1, b: 2 }; -for (const [key, val] of Object.entries(obj)) { - console.log(key, val); -} -``` +> [!TIP] +> [[オブジェクト]]の中身を `for...of` で回したい場合は、`Object.keys()`, `Object.values()`, `Object.entries()` を使うのがモダンな手法です。 +> ```js +> const obj = { a: 1, b: 2 }; +> for (const [key, val] of Object.entries(obj)) { +> console.log(key, val); +> } +>``` diff --git a/public/docs/javascript/2-control/4-2-throw.md b/public/docs/javascript/2-control/4-2-throw.md index 4200cc9e..59d6c1d9 100644 --- a/public/docs/javascript/2-control/4-2-throw.md +++ b/public/docs/javascript/2-control/4-2-throw.md @@ -9,7 +9,7 @@ question: ### `throw` について -JavaScriptでは `throw` で例外を投げることができます。`Error` オブジェクトを投げるのが一般的ですが、技術的には文字列や数値など、任意の値を投げることが可能です(ただし、スタックトレースが取れなくなるため推奨されません)。 +JavaScriptでは `throw` で例外を投げることができます。`Error` [[オブジェクト]]を投げるのが一般的ですが、技術的には[[文字列]]や[[数値]]など、任意の値を投げることが可能です(ただし、スタックトレースが取れなくなるため推奨されません)。 ```js-repl > try { throw new Error("Something went wrong"); } catch (e) { console.log(e.message); } diff --git a/public/docs/javascript/2-control/5-0-summary.md b/public/docs/javascript/2-control/5-0-summary.md index 07d87050..efc91109 100644 --- a/public/docs/javascript/2-control/5-0-summary.md +++ b/public/docs/javascript/2-control/5-0-summary.md @@ -7,8 +7,8 @@ question: [] ## この章のまとめ - * **条件分岐:** `if` 文での `[]` や `{}` は Truthy であることに注意。`switch` は厳密等価 (`===`) で判定される。 + * **条件分岐:** `if` 文での `[]` や `{}` は Truthy であることに注意。`switch` は[[厳密等価演算子]] (`===`) で判定される。 * **繰り返し:** 古典的な `for`, `while` は他のC系言語と同じ。 - * **for...in:** オブジェクトの **キー** を列挙する。配列には使わないこと。 + * **for...in:** [[オブジェクト]]の **キー** を列挙する。配列には使わないこと。 * **for...of:** 配列やコレクションの **値** を反復する。リスト処理の標準。 - * **例外処理:** `try...catch...finally` で行う。`throw` は任意の値を投げられるが、通常は `Error` オブジェクトを使用する。 + * **例外処理:** `try...catch...finally` で行う。`throw` は任意の値を投げられるが、通常は `Error` [[オブジェクト]]を使用する。 diff --git a/public/docs/javascript/2-control/5-1-practice1.md b/public/docs/javascript/2-control/5-1-practice1.md index d3400afd..7b6a462d 100644 --- a/public/docs/javascript/2-control/5-1-practice1.md +++ b/public/docs/javascript/2-control/5-1-practice1.md @@ -9,7 +9,7 @@ question: ### 練習問題1: 配列のフィルタリングと集計 -以下の数値が入った配列 `numbers` があります。 +以下の[[数値]]が入った配列 `numbers` があります。 `for...of` ループを使用して、**偶数かつ10より大きい数値** だけを抽出し、その合計値を計算してコンソールに出力するプログラムを書いてください。 ```js:practice3_1.js diff --git a/public/docs/javascript/2-control/5-2-practice2.md b/public/docs/javascript/2-control/5-2-practice2.md index c9f0fb29..06737881 100644 --- a/public/docs/javascript/2-control/5-2-practice2.md +++ b/public/docs/javascript/2-control/5-2-practice2.md @@ -11,13 +11,13 @@ question: 以下の仕様を満たす関数 `executeCommand(command)` を `switch` 文と `try...catch` を用いて作成してください。 -1. 引数 `command` は文字列を受け取る。 +1. 引数 `command` は[[文字列]]を受け取る。 2. `"start"` の場合、"System starting..." を出力。 3. `"stop"` の場合、"System stopping..." を出力。 -4. それ以外の文字列の場合、`Error` オブジェクトを `throw` する(メッセージは "Unknown command")。 +4. それ以外の文字列の場合、`Error` [[オブジェクト]]を `throw` する(メッセージは "Unknown command")。 5. `try...catch` ブロックを用いてこの関数を呼び出し、エラーが発生した場合は "Error caught: Unknown command" のように出力する。 -**ヒント:** `command` が `null` や `undefined` の場合もエラーとして処理されるように実装してください。 +**ヒント:** `command` が [[`null`]] や [[`undefined`]] の場合もエラーとして処理されるように実装してください。 ```js:practice3_2.js function executeCommand(command) { diff --git a/public/docs/javascript/3-functions-closures/-intro.md b/public/docs/javascript/3-functions-closures/-intro.md index f7774631..b20b9a95 100644 --- a/public/docs/javascript/3-functions-closures/-intro.md +++ b/public/docs/javascript/3-functions-closures/-intro.md @@ -1 +1 @@ -JavaScriptにおいて関数はオブジェクトの一種です。つまり、変数に代入したり、他の関数の引数として渡したり、関数から戻り値として返したりすることができます。この柔軟性が、JavaScriptの設計パターンの核心を担っています。 +JavaScriptにおいて関数はオブジェクトの一種です。つまり、[[変数]]に代入したり、他の関数の引数として渡したり、関数から戻り値として返したりすることができます。この柔軟性が、JavaScriptの設計パターンの核心を担っています。 diff --git a/public/docs/javascript/3-functions-closures/1-2-function-expression.md b/public/docs/javascript/3-functions-closures/1-2-function-expression.md index 5cca63f2..453439d1 100644 --- a/public/docs/javascript/3-functions-closures/1-2-function-expression.md +++ b/public/docs/javascript/3-functions-closures/1-2-function-expression.md @@ -10,7 +10,7 @@ question: ### 2\. 関数式 (Function Expression) -変数に関数を代入するスタイルです。変数の代入は実行時に行われるため、定義する前に呼び出すとエラーになります。現代のJavaScript開発では、意図しない巻き上げを防ぐためにこちら(または後述のアロー関数)が好まれる傾向にあります。 +[[変数]]に関数を代入するスタイルです。[[変数]]の代入は実行時に行われるため、定義する前に呼び出すとエラーになります。現代のJavaScript開発では、意図しない巻き上げを防ぐためにこちら(または後述のアロー関数)が好まれる傾向にあります。 ```js:function_expression.js // 定義前に呼び出すと... ReferenceError: Cannot access 'sayHi' before initialization diff --git a/public/docs/javascript/3-functions-closures/3-1-default-arg.md b/public/docs/javascript/3-functions-closures/3-1-default-arg.md index 32c4a627..6f628690 100644 --- a/public/docs/javascript/3-functions-closures/3-1-default-arg.md +++ b/public/docs/javascript/3-functions-closures/3-1-default-arg.md @@ -9,7 +9,7 @@ question: ### デフォルト引数 -引数が渡されなかった場合(または `undefined` の場合)に使用される初期値を設定できます。 +引数が渡されなかった場合(または [[`undefined`]] の場合)に使用される初期値を設定できます。 ```js:default_args.js const connect = (host = 'localhost', port = 8080) => { diff --git a/public/docs/javascript/3-functions-closures/3-2-rest-arg.md b/public/docs/javascript/3-functions-closures/3-2-rest-arg.md index 62e6f624..34e56e71 100644 --- a/public/docs/javascript/3-functions-closures/3-2-rest-arg.md +++ b/public/docs/javascript/3-functions-closures/3-2-rest-arg.md @@ -10,7 +10,7 @@ question: ### Restパラメータ (残余引数) -引数の数が不定の場合、`...` を使うことで、残りの引数を**配列として**受け取ることができます。以前は `arguments` オブジェクトを使っていましたが、Restパラメータの方が配列メソッド(`map`, `reduce`など)を直接使えるため便利です。 +引数の数が不定の場合、`...` を使うことで、残りの引数を**配列として**受け取ることができます。以前は `arguments` [[オブジェクト]]を使っていましたが、Restパラメータの方が配列メソッド(`map`, `reduce`など)を直接使えるため便利です。 ```js:rest_params.js const sum = (...numbers) => { diff --git a/public/docs/javascript/3-functions-closures/4-0-scope-chain.md b/public/docs/javascript/3-functions-closures/4-0-scope-chain.md index a5802350..3b4ad332 100644 --- a/public/docs/javascript/3-functions-closures/4-0-scope-chain.md +++ b/public/docs/javascript/3-functions-closures/4-0-scope-chain.md @@ -10,7 +10,7 @@ question: ## スコープチェーンとレキシカルスコープ -JavaScriptの変数の有効範囲(スコープ)を理解するために、「レキシカルスコープ」という概念を知る必要があります。 +JavaScriptの[[変数]]の有効範囲(スコープ)を理解するために、「レキシカルスコープ」という概念を知る必要があります。 * **レキシカルスコープ (Lexical Scope):** 関数が「どこで呼び出されたか」ではなく、**「どこで定義されたか」**によってスコープが決まるというルールです。 * **スコープチェーン (Scope Chain):** 変数を探す際、現在のスコープになければ、定義時の外側のスコープへと順番に探しに行く仕組みです。 diff --git a/public/docs/javascript/3-functions-closures/5-0-closure.md b/public/docs/javascript/3-functions-closures/5-0-closure.md index bef83fd0..d31558a7 100644 --- a/public/docs/javascript/3-functions-closures/5-0-closure.md +++ b/public/docs/javascript/3-functions-closures/5-0-closure.md @@ -11,15 +11,15 @@ question: ## クロージャ:関数が状態を持つ仕組み クロージャ (Closure) は、この章の最重要トピックです。 -一言で言えば、**「外側の関数のスコープにある変数を、外側の関数の実行終了後も参照し続ける関数」**のことです。 +一言で言えば、**「外側の関数のスコープにある[[変数]]を、外側の関数の実行終了後も参照し続ける関数」**のことです。 **なぜクロージャを使うのか?** -1. **カプセル化 (Encapsulation):** 変数を隠蔽し、特定の関数経由でしか変更できないようにすることで、予期せぬバグを防ぎます。 +1. **カプセル化 (Encapsulation):** [[変数]]を隠蔽し、特定の関数経由でしか変更できないようにすることで、予期せぬバグを防ぎます。 2. **状態の保持:** グローバル変数を使わずに、関数単位で永続的な状態を持てます。 3. **関数ファクトリ:** 設定の異なる関数を動的に生成する場合に役立ちます。 -プライベートな変数を持つカウンタを作ってみましょう。 +プライベートな[[変数]]を持つカウンタを作ってみましょう。 通常、関数(`createCounter`)の実行が終わると、そのローカル変数(`count`)はメモリから破棄されます。しかし、その変数を参照している内部関数(`increment`)が存在し、その内部関数が外部に返された場合、変数は破棄されずに保持され続けます。 diff --git a/public/docs/javascript/3-functions-closures/6-2-practice2.md b/public/docs/javascript/3-functions-closures/6-2-practice2.md index 6fda2513..7eb3601d 100644 --- a/public/docs/javascript/3-functions-closures/6-2-practice2.md +++ b/public/docs/javascript/3-functions-closures/6-2-practice2.md @@ -7,7 +7,7 @@ question: [] ### 問題2: クロージャによる掛け算生成器 -`createMultiplier` という関数を作成してください。この関数は数値 `x` を引数に取り、呼び出すたびに「引数を `x` 倍して返す関数」を返します。 +`createMultiplier` という関数を作成してください。この関数は[[数値]] `x` を引数に取り、呼び出すたびに「引数を `x` 倍して返す関数」を返します。 **使用例:** diff --git a/public/docs/javascript/4-this/1-0-this-basic.md b/public/docs/javascript/4-this/1-0-this-basic.md index 4d8bdad1..dfdb801b 100644 --- a/public/docs/javascript/4-this/1-0-this-basic.md +++ b/public/docs/javascript/4-this/1-0-this-basic.md @@ -18,9 +18,9 @@ JavaScriptにおける関数(アロー関数を除く)の `this` は、**「 大きく分けて、以下の3つのパターンを理解すれば基本は押さえられます。 -* **メソッド呼び出し:** オブジェクトのプロパティとして関数を呼び出した場合(`obj.method()`)、`this` は**ドットの左側のオブジェクト**(レシーバ)になります。これは他の言語のメンバ関数に近い挙動です。 +* **メソッド呼び出し:** [[オブジェクト]]のプロパティとして関数を呼び出した場合(`obj.method()`)、`this` は**ドットの左側の[[オブジェクト]]**(レシーバ)になります。これは他の言語のメンバ関数に近い挙動です。 * **関数呼び出し:** 関数を単体で呼び出した場合(`func()`)、`this` は**グローバルオブジェクト**(ブラウザでは `window`、Node.jsでは `global`)になります。 -ただし、**Strict Mode(`"use strict"`)**では、安全のため `undefined` になります。 +ただし、**Strict Mode(`"use strict"`)**では、安全のため [[`undefined`]] になります。 * **コンストラクタ呼び出し:** `new` キーワードをつけて呼び出した場合、`this` は**新しく生成されたインスタンス**になります(これは[[./6]]で詳しく扱います)。 以下のコードで、同じ関数でも呼び出し方によって `this` が変わる様子を確認しましょう。 @@ -55,4 +55,5 @@ this is: Alice this is: undefined ``` -> **ポイント:** `person.show` を `standaloneShow` に代入した時点で、オブジェクトとの結びつきは失われます。そのため、`standaloneShow()` と実行すると「関数呼び出し」扱いとなり、`this` は `undefined`(非Strict Modeならグローバルオブジェクト)になります。これが「`this` が消える」現象の正体です。 +> [!TIP] +> `person.show` を `standaloneShow` に代入した時点で、[[オブジェクト]]との結びつきは失われます。そのため、`standaloneShow()` と実行すると「関数呼び出し」扱いとなり、`this` は [[`undefined`]](非Strict Modeならグローバルオブジェクト)になります。これが「`this` が消える」現象の正体です。 diff --git a/public/docs/javascript/4-this/2-0-bind-basic.md b/public/docs/javascript/4-this/2-0-bind-basic.md index 30257e57..f2d03c78 100644 --- a/public/docs/javascript/4-this/2-0-bind-basic.md +++ b/public/docs/javascript/4-this/2-0-bind-basic.md @@ -8,4 +8,4 @@ question: ## `this` を固定する: bind, call, apply -「関数呼び出し」でも特定のオブジェクトを `this` として扱いたい場合があります。JavaScriptには、`this` を明示的に指定(束縛)するためのメソッドが3つ用意されています。 +「関数呼び出し」でも特定の[[オブジェクト]]を `this` として扱いたい場合があります。JavaScriptには、`this` を明示的に指定(束縛)するためのメソッドが3つ用意されています。 diff --git a/public/docs/javascript/4-this/2-1-call-apply.md b/public/docs/javascript/4-this/2-1-call-apply.md index 171e246d..6a937437 100644 --- a/public/docs/javascript/4-this/2-1-call-apply.md +++ b/public/docs/javascript/4-this/2-1-call-apply.md @@ -9,7 +9,7 @@ question: ### call と apply -これらは関数を**即座に実行**します。第一引数に `this` としたいオブジェクトを渡します。 +これらは関数を**即座に実行**します。第一引数に `this` としたい[[オブジェクト]]を渡します。 * `call(thisArg, arg1, arg2, ...)`: 引数をカンマ区切りで渡す。 * `apply(thisArg, [argsArray])`: 引数を配列として渡す。 diff --git a/public/docs/javascript/4-this/3-0-arrow-func.md b/public/docs/javascript/4-this/3-0-arrow-func.md index 9576c6e3..0639449a 100644 --- a/public/docs/javascript/4-this/3-0-arrow-func.md +++ b/public/docs/javascript/4-this/3-0-arrow-func.md @@ -62,4 +62,5 @@ Legacy: Error - Cannot read properties of undefined (reading 'seconds') Modern: 1 ``` -> **注意:** アロー関数は便利な反面、`this` を動的に変更することができません(`call` や `bind` を使っても無視されます)。そのため、動的なコンテキストが必要な場合(例:オブジェクトのメソッド定義そのものや、ライブラリ等で `this` を注入される場合)には通常の関数式を使います。 +> [!WARNING] +> アロー関数は便利な反面、`this` を動的に変更することができません(`call` や `bind` を使っても無視されます)。そのため、動的なコンテキストが必要な場合(例:[[オブジェクト]]のメソッド定義そのものや、ライブラリ等で `this` を注入される場合)には通常の関数式を使います。 diff --git a/public/docs/javascript/4-this/4-0-summary.md b/public/docs/javascript/4-this/4-0-summary.md index 080c9ef5..0f3f3c5e 100644 --- a/public/docs/javascript/4-this/4-0-summary.md +++ b/public/docs/javascript/4-this/4-0-summary.md @@ -10,7 +10,7 @@ question: [] JavaScriptの `this` は、他の静的な言語とは異なり「呼び出し時」に解決されます。 1. **メソッド呼び出し (`obj.method()`)**: `this` は `obj`。 -2. **関数呼び出し (`func()`)**: `this` は `undefined` (Strict Mode) またはグローバルオブジェクト。 +2. **関数呼び出し (`func()`)**: `this` は [[`undefined`]] (Strict Mode) またはグローバルオブジェクト。 3. **明示的な指定**: `call`, `apply` で一時的に、`bind` で永続的に `this` を指定可能。 4. **アロー関数**: 独自の `this` を持たず、外側のスコープの `this` をそのまま使う(レキシカルスコープ)。 diff --git a/public/docs/javascript/4-this/4-2-practice2.md b/public/docs/javascript/4-this/4-2-practice2.md index ac1403ce..a961a015 100644 --- a/public/docs/javascript/4-this/4-2-practice2.md +++ b/public/docs/javascript/4-this/4-2-practice2.md @@ -9,7 +9,7 @@ question: ### 問題2: アロー関数の特性 -以下の `calculator` オブジェクトにはバグがあります。`multiply` メソッドが正しい結果(配列の各要素を `factor` 倍する)を返すように修正してください。 +以下の `calculator` [[オブジェクト]]にはバグがあります。`multiply` メソッドが正しい結果(配列の各要素を `factor` 倍する)を返すように修正してください。 ヒント:`map` の中のコールバック関数に注目してください。 ```js:practice5_2.js diff --git a/public/docs/javascript/5-objects-prototype/1-0-obj-literal.md b/public/docs/javascript/5-objects-prototype/1-0-obj-literal.md index 905d6a20..5c0da330 100644 --- a/public/docs/javascript/5-objects-prototype/1-0-obj-literal.md +++ b/public/docs/javascript/5-objects-prototype/1-0-obj-literal.md @@ -11,7 +11,7 @@ question: ## オブジェクトリテラルとプロパティ -JavaScriptにおけるオブジェクトは、基本的にはキー(プロパティ名)と値のコレクション(連想配列やハッシュマップに近いもの)です。最も一般的な生成方法は**オブジェクトリテラル** `{...}` を使うことです。 +JavaScriptにおける[[オブジェクト]]は、基本的にはキー(プロパティ名)と値のコレクション(連想配列やハッシュマップに近いもの)です。最も一般的な生成方法は**オブジェクトリテラル** `{...}` を使うことです。 ```js-repl > const book = { diff --git a/public/docs/javascript/5-objects-prototype/1-1-properties.md b/public/docs/javascript/5-objects-prototype/1-1-properties.md index 974dde1d..6a5f7b3d 100644 --- a/public/docs/javascript/5-objects-prototype/1-1-properties.md +++ b/public/docs/javascript/5-objects-prototype/1-1-properties.md @@ -10,7 +10,7 @@ question: ### プロパティの追加・削除 -動的な言語であるJavaScriptでは、オブジェクト作成後にプロパティを追加・削除できます。 +動的な言語であるJavaScriptでは、[[オブジェクト]]作成後にプロパティを追加・削除できます。 ```js-repl > const config = { env: "production" }; diff --git a/public/docs/javascript/5-objects-prototype/2-0-method-this-recall.md b/public/docs/javascript/5-objects-prototype/2-0-method-this-recall.md index c45e780b..8ae6a6ad 100644 --- a/public/docs/javascript/5-objects-prototype/2-0-method-this-recall.md +++ b/public/docs/javascript/5-objects-prototype/2-0-method-this-recall.md @@ -9,8 +9,8 @@ question: ## メソッドと this(復習) -オブジェクトのプロパティには関数も設定できます。これを**メソッド**と呼びます。 -[[./4]]で学んだ通り、メソッド呼び出しにおける `this` は、「ドットの左側にあるオブジェクト(レシーバ)」を指します。 +[[オブジェクト]]のプロパティには関数も設定できます。これを**メソッド**と呼びます。 +[[./4]]で学んだ通り、メソッド呼び出しにおける `this` は、「ドットの左側にある[[オブジェクト]](レシーバ)」を指します。 ```js-repl > const counter = { diff --git a/public/docs/javascript/5-objects-prototype/3-0-prototype-basic.md b/public/docs/javascript/5-objects-prototype/3-0-prototype-basic.md index 56cbd8c6..d49e20db 100644 --- a/public/docs/javascript/5-objects-prototype/3-0-prototype-basic.md +++ b/public/docs/javascript/5-objects-prototype/3-0-prototype-basic.md @@ -10,6 +10,6 @@ question: ## プロトタイプとは何か? -ここからが本章の核心です。JavaScriptのすべてのオブジェクトは、自身の親となる別のオブジェクトへの隠されたリンクを持っています。このリンク先のオブジェクトを**プロトタイプ**と呼びます。 +ここからが本章の核心です。JavaScriptのすべての[[オブジェクト]]は、自身の親となる別の[[オブジェクト]]への隠されたリンクを持っています。このリンク先のオブジェクトを**プロトタイプ**と呼びます。 -オブジェクトからプロパティを読み取ろうとしたとき、そのオブジェクト自身がプロパティを持っていなければ、JavaScriptエンジンは自動的にプロトタイプを探しに行きます。 +[[オブジェクト]]からプロパティを読み取ろうとしたとき、その[[オブジェクト]]自身がプロパティを持っていなければ、JavaScriptエンジンは自動的にプロトタイプを探しに行きます。 diff --git a/public/docs/javascript/5-objects-prototype/4-0-prototype-chain.md b/public/docs/javascript/5-objects-prototype/4-0-prototype-chain.md index f7b7090f..a1c0bede 100644 --- a/public/docs/javascript/5-objects-prototype/4-0-prototype-chain.md +++ b/public/docs/javascript/5-objects-prototype/4-0-prototype-chain.md @@ -11,12 +11,12 @@ question: ## プロトタイプチェーンによる継承の仕組み -あるオブジェクトのプロパティにアクセスした際、JavaScriptは以下の順序で探索を行います。 +ある[[オブジェクト]]のプロパティにアクセスした際、JavaScriptは以下の順序で探索を行います。 -1. そのオブジェクト自身(Own Property)が持っているか? -2. 持っていなければ、そのオブジェクトのプロトタイプが持っているか? +1. その[[オブジェクト]]自身(Own Property)が持っているか? +2. 持っていなければ、その[[オブジェクト]]のプロトタイプが持っているか? 3. それでもなければ、プロトタイプのプロトタイプが持っているか? -4. `null` に到達するまで繰り返し、見つからなければ `undefined` を返す。 +4. [[`null`]] に到達するまで繰り返し、見つからなければ [[`undefined`]] を返す。 この連鎖を**プロトタイプチェーン**と呼びます。クラス継承のように型定義をコピーするのではなく、**リンクを辿って委譲(Delegation)する**仕組みです。 diff --git a/public/docs/javascript/5-objects-prototype/5-0-object-create-basic.md b/public/docs/javascript/5-objects-prototype/5-0-object-create-basic.md index c55b7d1d..e2e4b932 100644 --- a/public/docs/javascript/5-objects-prototype/5-0-object-create-basic.md +++ b/public/docs/javascript/5-objects-prototype/5-0-object-create-basic.md @@ -8,4 +8,4 @@ question: ## Object.create() とコンストラクタ関数 -`__proto__` を直接操作するのはパフォーマンスや標準化の観点から推奨されません。プロトタイプを指定してオブジェクトを生成する正しい方法は2つあります。 +`__proto__` を直接操作するのはパフォーマンスや標準化の観点から推奨されません。プロトタイプを指定して[[オブジェクト]]を生成する正しい方法は2つあります。 diff --git a/public/docs/javascript/5-objects-prototype/5-1-object-create.md b/public/docs/javascript/5-objects-prototype/5-1-object-create.md index 626fa2c5..93c448c9 100644 --- a/public/docs/javascript/5-objects-prototype/5-1-object-create.md +++ b/public/docs/javascript/5-objects-prototype/5-1-object-create.md @@ -9,7 +9,7 @@ question: ### 1\. Object.create() -指定したオブジェクトをプロトタイプとする新しい空のオブジェクトを生成します。 +指定した[[オブジェクト]]をプロトタイプとする新しい空の[[オブジェクト]]を生成します。 ```js-repl > const proto = { greet: function() { return "Hello"; } }; diff --git a/public/docs/javascript/5-objects-prototype/6-0-summary.md b/public/docs/javascript/5-objects-prototype/6-0-summary.md index 90c7991b..45382a6b 100644 --- a/public/docs/javascript/5-objects-prototype/6-0-summary.md +++ b/public/docs/javascript/5-objects-prototype/6-0-summary.md @@ -8,6 +8,6 @@ question: [] ## この章のまとめ 1. JavaScriptはクラスベースではなく、**プロトタイプベース**の継承を行う。 -2. オブジェクトは隠しプロパティ(`[[Prototype]]`)を持ち、プロパティが見つからない場合にそこを探索する(プロトタイプチェーン)。 -3. `Object.create(proto)` は、特定のプロトタイプを持つオブジェクトを直接生成する。 +2. [[オブジェクト]]は隠しプロパティ(`[[Prototype]]`)を持ち、プロパティが見つからない場合にそこを探索する(プロトタイプチェーン)。 +3. `Object.create(proto)` は、特定のプロトタイプを持つ[[オブジェクト]]を直接生成する。 4. コンストラクタ関数と `new` 演算子を使うと、`Func.prototype` を親に持つインスタンスを生成できる。これがJavaなどの「クラス」に近い振る舞いを模倣する仕組みである。 diff --git a/public/docs/javascript/5-objects-prototype/6-1-practice1.md b/public/docs/javascript/5-objects-prototype/6-1-practice1.md index 08187643..c8bec66d 100644 --- a/public/docs/javascript/5-objects-prototype/6-1-practice1.md +++ b/public/docs/javascript/5-objects-prototype/6-1-practice1.md @@ -11,8 +11,8 @@ question: `Object.create()` を使用して、以下の要件を満たすコードを書いてください。 -1. `robot` オブジェクトを作成し、`battery: 100` というプロパティと、バッテリーを10減らして残量を表示する `work` メソッドを持たせる。 -2. `robot` をプロトタイプとする `cleaningRobot` オブジェクトを作成する。 +1. `robot` [[オブジェクト]]を作成し、`battery: 100` というプロパティと、バッテリーを10減らして残量を表示する `work` メソッドを持たせる。 +2. `robot` をプロトタイプとする `cleaningRobot` [[オブジェクト]]を作成する。 3. `cleaningRobot` 自身に `type: "cleaner"` というプロパティを追加する。 4. `cleaningRobot.work()` を呼び出し、正しく動作(プロトタイプチェーンの利用)を確認する。 diff --git a/public/docs/javascript/6-classes/1-1-class-expr.md b/public/docs/javascript/6-classes/1-1-class-expr.md index a92b06bb..3a578888 100644 --- a/public/docs/javascript/6-classes/1-1-class-expr.md +++ b/public/docs/javascript/6-classes/1-1-class-expr.md @@ -9,7 +9,7 @@ question: ### クラス式 -関数と同様に、クラスも式として変数に代入できます(あまり頻繁には使われませんが、知識として持っておくと良いでしょう)。 +関数と同様に、クラスも式として[[変数]]に代入できます(あまり頻繁には使われませんが、知識として持っておくと良いでしょう)。 ```js-repl > const Item = class { diff --git a/public/docs/javascript/7-arrays/2-2-destructuring.md b/public/docs/javascript/7-arrays/2-2-destructuring.md index bc1b0fde..a4069d0c 100644 --- a/public/docs/javascript/7-arrays/2-2-destructuring.md +++ b/public/docs/javascript/7-arrays/2-2-destructuring.md @@ -10,7 +10,7 @@ question: ### デストラクチャリング(分割代入) -配列から要素を取り出して変数に代入する操作を簡潔に書くことができます。 +配列から要素を取り出して[[変数]]に代入する操作を簡潔に書くことができます。 ```js-repl > const users = ['Alice', 'Bob', 'Charlie']; diff --git a/public/docs/javascript/7-arrays/3-0-higher-order-func.md b/public/docs/javascript/7-arrays/3-0-higher-order-func.md index 69c92650..d988bcd2 100644 --- a/public/docs/javascript/7-arrays/3-0-higher-order-func.md +++ b/public/docs/javascript/7-arrays/3-0-higher-order-func.md @@ -19,7 +19,7 @@ JavaScriptでは、`for`文や`while`文を書く頻度は減っています。 * **`forEach`**: 単なる反復処理(戻り値なし)。副作用(ログ出力やDB保存など)を起こすために使う。 * **`map`**: 全要素を変換し、**新しい配列**を返す。 * **`filter`**: 条件に一致する要素のみを抽出し、**新しい配列**を返す。 - * **`reduce`**: 要素を一つずつ処理して、**単一の値**(合計、オブジェクトなど)に集約する。 + * **`reduce`**: 要素を一つずつ処理して、**単一の値**(合計、[[オブジェクト]]など)に集約する。 以下は、これらのメソッドを使って商品リストを処理するスクリプトです。 diff --git a/public/docs/javascript/7-arrays/4-0-other-method.md b/public/docs/javascript/7-arrays/4-0-other-method.md index 30bbf7c0..6d1c6467 100644 --- a/public/docs/javascript/7-arrays/4-0-other-method.md +++ b/public/docs/javascript/7-arrays/4-0-other-method.md @@ -12,10 +12,10 @@ question: 特定の要素を探したり、条件チェックを行ったりする場合に特化したメソッドです。これらもコールバック関数を受け取ります。 - * **`find`**: 最初に見つかった要素自体を返す(見つからなければ `undefined`)。 + * **`find`**: 最初に見つかった要素自体を返す(見つからなければ [[`undefined`]])。 * **`findIndex`**: 最初に見つかった要素のインデックスを返す(見つからなければ `-1`)。 - * **`some`**: 条件を満たす要素が**一つでもあれば** `true` を返す。 - * **`every`**: **すべての要素**が条件を満たせば `true` を返す。 + * **`some`**: 条件を満たす要素が**一つでもあれば** [[`true`]] を返す。 + * **`every`**: **すべての要素**が条件を満たせば [[`true`]] を返す。 ```js-repl > const scores = [85, 92, 45, 78, 90]; diff --git a/public/docs/javascript/8-promise/4-0-promise-basic.md b/public/docs/javascript/8-promise/4-0-promise-basic.md index 2228e5bf..df3f7dee 100644 --- a/public/docs/javascript/8-promise/4-0-promise-basic.md +++ b/public/docs/javascript/8-promise/4-0-promise-basic.md @@ -11,9 +11,9 @@ question: ## Promiseの概念 -**Promise** は、非同期処理の「最終的な完了(または失敗)」とその「結果の値」を表すオブジェクトです。未来のある時点で値が返ってくる「約束手形」のようなものと考えてください。 +**Promise** は、非同期処理の「最終的な完了(または失敗)」とその「結果の値」を表す[[オブジェクト]]です。未来のある時点で値が返ってくる「約束手形」のようなものと考えてください。 -Promiseオブジェクトは以下の3つの状態のいずれかを持ちます。 +Promise[[オブジェクト]]は以下の3つの状態のいずれかを持ちます。 1. **Pending (待機中):** 初期状態。処理はまだ完了していない。 2. **Fulfilled (履行):** 処理が成功し、値を持っている状態。(`resolve` された) diff --git a/public/docs/javascript/8-promise/6-0-summary.md b/public/docs/javascript/8-promise/6-0-summary.md index 4343f3dd..dbc12252 100644 --- a/public/docs/javascript/8-promise/6-0-summary.md +++ b/public/docs/javascript/8-promise/6-0-summary.md @@ -9,7 +9,7 @@ question: [] * JavaScriptはシングルスレッドで動作し、**イベントループ** という仕組みを使って非同期処理を管理しています。 * 非同期処理の完了を待つために、昔はコールバック関数が多用されていましたが、ネストが深くなる問題がありました。 - * **Promise** は非同期処理の状態(Pending, Fulfilled, Rejected)を管理するオブジェクトです。 + * **Promise** は非同期処理の状態(Pending, Fulfilled, Rejected)を管理する[[オブジェクト]]です。 * `.then()` をチェーンさせることで、非同期処理を直列に、読みやすく記述できます。 * エラーハンドリングは `.catch()` で一括して行えます。 diff --git a/public/docs/javascript/8-promise/7-2-practice2.md b/public/docs/javascript/8-promise/7-2-practice2.md index 1e5ecb07..7b634fed 100644 --- a/public/docs/javascript/8-promise/7-2-practice2.md +++ b/public/docs/javascript/8-promise/7-2-practice2.md @@ -12,7 +12,7 @@ question: 以下の仕様を満たすコードを作成してください。 -1. 関数 `fetchUser(userId)`: 1秒後に `{ id: userId, name: "User" + userId }` というオブジェクトでresolveする。 +1. 関数 `fetchUser(userId)`: 1秒後に `{ id: userId, name: "User" + userId }` という[[オブジェクト]]でresolveする。 2. 関数 `fetchPosts(userName)`: 1秒後に `["Post 1 by " + userName, "Post 2 by " + userName]` という配列でresolveする。 3. これらをPromiseチェーンで繋ぎ、ユーザーID `1` でユーザーを取得した後、その名前を使って投稿を取得し、最終的に投稿リストをコンソールに表示してください。 diff --git a/public/docs/javascript/9-async-await/3-0-fetch.md b/public/docs/javascript/9-async-await/3-0-fetch.md index ab1cfc52..5e2c2001 100644 --- a/public/docs/javascript/9-async-await/3-0-fetch.md +++ b/public/docs/javascript/9-async-await/3-0-fetch.md @@ -20,8 +20,8 @@ JavaScript(特にブラウザ環境や最近のNode.js)でHTTPリクエス 基本的な流れは以下の通りです: 1. `fetch(url)` を実行し、レスポンスヘッダーが届くのを待つ。 -2. Responseオブジェクトを受け取る。 -3. Responseオブジェクトからメソッド(`.json()`, `.text()`など)を使ってボディを読み込む(これも非同期)。 +2. Response[[オブジェクト]]を受け取る。 +3. Response[[オブジェクト]]からメソッド(`.json()`, `.text()`など)を使ってボディを読み込む(これも非同期)。 ```js:fetch_basic.js // 外部APIからJSONデータを取得する例 diff --git a/public/docs/javascript/9-async-await/3-1-fetch-post.md b/public/docs/javascript/9-async-await/3-1-fetch-post.md index 9a1200b6..2cdb70b4 100644 --- a/public/docs/javascript/9-async-await/3-1-fetch-post.md +++ b/public/docs/javascript/9-async-await/3-1-fetch-post.md @@ -13,7 +13,7 @@ question: ### JSONデータの送信 (POST) -データを送信する場合は、第2引数にオプションオブジェクトを渡します。 +データを送信する場合は、第2引数にオプション[[オブジェクト]]を渡します。 ```js-repl > const postData = { title: 'foo', body: 'bar', userId: 1 };