diff --git a/src/pages/js/011-what-program-do.mdx b/src/pages/js/011-what-program-do.mdx index a4ad73d..76e996f 100644 --- a/src/pages/js/011-what-program-do.mdx +++ b/src/pages/js/011-what-program-do.mdx @@ -152,3 +152,145 @@ // エラー: constで宣言された変数は値の変更ができない pi = 3.14159; ``` + +## 変数の値 + +変数に入れられる値には、いくつか種類があります。 +値がどんな種類なのかということを、**データ型**と呼びます。 + +このデータ型によって、どのようなプログラムを書くことができるのかが決まります。 + +### 数字 (Number型) + +数字を扱うデータ型です。 + +```js +let age = 18; // 整数 +let tax_rate = 0.1; // 小数 +let golf_score = -5; // 負の数 +``` + +### 文字列 (String型) + +文字の並びを扱うデータ型です。 + +シングルクォート(`'`)や、ダブルクォート(`"`)などで囲むことで表現します。 + +```js +let name = "もつに"; // ダブルクォートで囲む +let greeting = 'こんにちは'; // シングルクォートで囲む +``` + +
+ +余談ですが、`も`、`つ`、`に`と、それぞれの文字を`もつに`と1つにまとめるような書き方を採用しています。 +これは文字を1列に並べていることから、**文字列**と呼ばれています。 + +### 構造 (Object型) + +なにかを管理しようとしたときに、人の目にはある程度まとまりがあったほうが便利です。 +これをプログラミング的に表現したものが、**オブジェクト**です。 + +これは、`{` と `}`で囲まれた中に、`キー: 値`の組み合わせを並べて表現します。 + +```js +let 変数名 = { + [キー名1]: 値, + [キー名2]: 値, + [キー名3]: 値, + ... +} +``` + +```js +let person = { + // 文字列 + name: "もつに", + + // 数字 + age: 18, + + // 関数を値として持つこともできる + greeting: function() { + console.log("こんにちは!"); + } +}; +``` + +値を取り出すときは、以下のように書きます。 + +```js +// 変数名.キー名 + +person.name; // "もつに" +person.age; // 18 + +// 関数なので、末尾に()をつけて実行することもできる +person.greeting(); // => こんにちは! +``` + +
+ +他の変数と同様、別の値を代入して変更することもできます。 + +```js +// nameの値を"たろう"に変更 +person.name = "たろう"; + +// ageの値を20に変更する +person.age = 20; + +// addressという新しいキーを追加して値を設定 +person.address = "東京都"; +``` + +### 配列 + +数字の連番や、例えばクラスの生徒リストなど、同じ種類のものをまとめて扱いたいことがあります。 +このようなときに使うのが、**配列**です。 + +配列は、`[` と `]`で囲まれた中に、値をカンマ(`,`)で区切って並べて表現します。 + +```js +let 変数名 = [値1, 値2, 値3, ...]; +``` + +
+ +```js +let numbers = [10, 20, 30, 40, 50]; + +let names = ["もつに", "たかし", "なおき"]; + +let students = [ + { name: "もつに", age: 18 }, + { name: "たかし", age: 20 }, + { name: "なおき", age: 19 }, +]; +``` + +
+ +この配列には、先頭から順に`0`、`1`、`2`、...という番号(=**インデックス**)が自動的に振られます。 +値を取り出す方法の1つとして、このインデックスを使う方法があります。 + +```js +let names = [ + "もつに", // 0番 + "たかし", // 1番 + "なおき", // 2番 +]; + +names[0]; // "もつに" +names[1]; // "たかし" +names[2]; // "なおき" + + +let students = [ + { name: "もつに", age: 18 }, // 0番 + { name: "たかし", age: 20 }, // 1番 + { name: "なおき", age: 19 }, // 2番 +]; + +students[0].name; // "もつに" +students[0].age; // 18