Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions public/docs/javascript/1-basics/2-0-primitive-type.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,31 @@ JavaScriptは動的型付け言語であり、変数は特定の型に紐付き
5. **null**: 「値が存在しない」ことを意図的に示す型。
6. **Symbol**: 一意で不変な識別子。オブジェクトのプロパティキーなどに使われます。
7. **BigInt**: `Number`型では表現できない巨大な整数を扱います(末尾に `n` をつけます)。

```js-repl
> // String: シングルクォートまたはダブルクォートで囲む
> const language = "JavaScript";
undefined
> language
'JavaScript'
> // テンプレートリテラル(バッククォート)を使うと変数を文字列に埋め込める
> const version = 2015;
undefined
> `${language} ES${version}`
'JavaScript ES2015'
> // Number: 整数も小数も同じ型
> const price = 1980;
undefined
> const tax = 0.1;
undefined
> price * (1 + tax)
2178.0000000000002
> // Boolean
> const isActive = true;
undefined
> typeof isActive
'boolean'
> // BigInt: 末尾に n をつける
> 9007199254740991n + 1n
9007199254740992n
```
21 changes: 19 additions & 2 deletions public/docs/javascript/1-basics/3-0-object.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,23 @@ question:

主なオブジェクト型には以下があります。

* **Object**: キーと値のペアの集合(辞書、ハッシュマップに近い)。
* **Array**: 順序付きリスト。
* **Object**: キーと値のペアの集合(辞書、ハッシュマップに近い)。詳しくは5章で解説します。
* **Array**: 順序付きリスト。詳しくは7章で解説します。
* **Function**: JavaScriptでは関数もオブジェクトであり、変数に代入したり引数として渡すことができます(第一級関数)。

```js-repl
> // Object: キーと値のペアの集合
> const user = { name: "Alice", age: 25 };
undefined
> user.name
'Alice'
> user["age"]
25
> // Array: 順序付きリスト(インデックスは 0 から始まる)
> const colors = ["Red", "Green", "Blue"];
undefined
> colors[0]
'Red'
> colors.length
3
```
22 changes: 6 additions & 16 deletions public/docs/javascript/1-basics/6-1-practice1.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,19 @@
---
id: javascript-basics-practice1
title: '練習問題1: テンプレートリテラルと型変換'
title: '練習問題1: テンプレートリテラル'
level: 3
question:
- テンプレートリテラルを使って自己紹介文を作る具体的なコード例を見せてもらえますか?
- 論理和演算子 `||` と Null合体演算子 `??` は、どちらを使っても良いのですか?違いはありますか?
- 年齢がnullまたはundefinedの場合に「不明」と表示させる部分について、コードのヒントが欲しいです。
- テンプレートリテラルの `${}` の中に計算式を書けますか?
- バッククォートの中でバッククォート自体を使いたい場合はどうすれば良いですか?
---

### 練習問題1: テンプレートリテラルと型変換
### 練習問題1: テンプレートリテラル

ユーザーの年齢(数値)と名前(文字列)を受け取り、自己紹介文を作成する関数を作成してください。
ただし、年齢が `null` または `undefined` の場合は「不明」と表示するようにしてください。論理和演算子 `||` または Null合体演算子 `??` を活用してみましょう。
`itemName` という変数に商品名(文字列)、`price` という変数に価格(数値)、`stock` という変数に在庫数(数値)をそれぞれ代入してください。その後、テンプレートリテラルを使って「商品: [商品名], 価格: [価格]円, 在庫: [在庫数]個」という形式の文字列を作り、`console.log()` で出力するコードを書いてみましょう。

```js:practice2_1.js
// 以下の関数を完成させてください
function introduce(name, age) {
// ここにコードを記述
}

console.log(introduce("Tanaka", 25));
console.log(introduce("Sato", null));
```

```js-exec:practice2_1.js
My name is Tanaka and I am 25 years old.
My name is Sato and I am 不明 years old.
(出力例) 商品: 高性能マウス, 価格: 4500円, 在庫: 2
```
24 changes: 7 additions & 17 deletions public/docs/javascript/1-basics/6-2-practice2.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,20 @@
---
id: javascript-basics-practice2
title: '練習問題2: オブジェクトの操作と参照'
title: '練習問題2: constとオブジェクトの変更'
level: 3
question:
- なぜ `newList = originalList` だと `originalList` も変更されてしまうのですか?
- 「参照コピー」とはどういう状態ですか?
- スプレッド構文 `...` を使って、この問題をどう解決すれば良いですか?
- 配列をコピーする他の方法はありますか?
- constで宣言したのにプロパティを変更できるのはなぜですか?
- プロパティの変更と、変数への再代入の違いは何ですか?
---

### 練習問題2: オブジェクトの操作と参照
### 練習問題2: constとオブジェクトの変更

以下のコードにはバグ(意図しない挙動)があります。
`originalList` の内容を保持したまま、新しい要素を追加した `newList` を作成したいのですが、現状では `originalList` も変更されてしまいます。
スプレッド構文 `...` などを使い、`originalList` を変更せずに `newList` を作成するように修正してください。
`const` を使って、`name`(商品名・文字列)と `price`(価格・数値)を持つ商品オブジェクト `product` を作成してください。
次に、`price` を別の値に変更し、さらに `stock`(在庫数・数値)プロパティを新たに追加してから、`console.log()` でオブジェクトの内容を出力してみましょう。

```js:practice2_2.js
const originalList = ["Apple", "Banana"];

// 参照コピーになっているため originalList も変わってしまう
const newList = originalList;
newList.push("Orange");

console.log("Original:", originalList); // ["Apple", "Banana"] と出力させたい
console.log("New:", newList); // ["Apple", "Banana", "Orange"] と出力させたい
```

```js-exec:practice2_2.js
(出力例) { name: 'コーヒー', price: 550, stock: 30 }
```
Loading