diff --git a/docs/1-trial-session/09-functions/index.md b/docs/1-trial-session/09-functions/index.md
index 64b33cc84..811ea8d75 100644
--- a/docs/1-trial-session/09-functions/index.md
+++ b/docs/1-trial-session/09-functions/index.md
@@ -47,7 +47,7 @@ greet("morning", "佐藤");
## 戻り値
-
関数呼び出しは式の一種です。関数定義内で return 文を用いると、関数の実行が停止され、関数呼び出し式の評価結果が確定します。この値を戻り値と呼びます。ある値を戻り値として設定して関数の実行を終了することを、関数がその値を返すと表現します。
+関数呼び出しは式の一種です。関数定義内で return 文 を用いると、関数の実行が停止され、関数呼び出し式の評価結果が確定します。この値を戻り値と呼びます。ある値を戻り値として設定して関数の実行を終了することを、関数がその値を返すと表現します。
```javascript
function add(a, b) {
@@ -61,6 +61,24 @@ document.write(add(3, 4));
+:::tip
+**return 文** が実行された時点で関数の処理が終了するため、次のように書くことで [if ~ else 文](../if-statement/#if--else) や [&& (AND) 演算子](../boolean/#論理演算子)の繰り返しを避けつつ、複数の条件のついた処理を実行することができます。
+
+```javascript
+let age = 21;
+let hasDriverLicense = true;
+let isDrunk = true;
+function tryToDrive() {
+ // if 構文で実行する式が一行だけの場合、{} を省略できます。
+ if (age < 18) return;
+ if (!hasDriverLicense) return;
+ if (isDrunk) return;
+ document.write("車を運転できます。");
+}
+```
+
+:::
+
## 変数のスコープ
関数内で宣言された変数は、関数内でのみ有効です。変数が有効な範囲のことを、その変数のスコープと呼んでいます。
@@ -102,23 +120,57 @@ increment();
:::
+## モジュール化
+
+複雑な操作を 関数 として モジュール化 して複数のブロックに分解することで、コードの可読性を上げることができます。
+
+モジュール化前:
+
+```javascript
+const stringToRepeat = "☆";
+for (let i = 0; i < 10; i += 1) {
+ let result = "";
+ for (let j = 0; j < i; j += 1) {
+ result += stringToRepeat;
+ }
+ document.write(result);
+ document.write("
");
+}
+```
+
+モジュール化後:
+
+```javascript
+function repeat(stringToRepeat, times) {
+ let result = "";
+ for (let j = 0; j < times; j += 1) {
+ result += stringToRepeat;
+ }
+ return result;
+}
+for (let i = 0; i < 10; i += 1) {
+ document.write(repeat("☆", i));
+ document.write("
");
+}
+```
+
+この例における`repeat`関数は、第一引数の文字列を第二引数回だけ繰り返し足したものを返します。
+
## 演習
携帯電話料金を計算する関数を作ってみましょう。
```javascript
-function calculateCost(monthlyBandwidth) {
+function calculateCost(monthlyDataUsage) {
// ここに処理を書く
}
document.write(calculateCost(3.5));
```
-`calculateCost` は、引数に月間転送量 `monthlyBandwidth` を取り、その月の携帯電話料金を戻り値として返す関数です。携帯電話料金は、下のルールで決定されるとします。
+`calculateCost` は、引数に月間転送量 `monthlyDataUsage` を取り、その月の携帯電話料金を戻り値として返す関数です。携帯電話料金は、下のルールで決定されるとします。
-> 月間転送量を _monthlyBandwidth_ (GB) とします。
->
-> - _monthlyBandwidth_ < 5.0 のとき、携帯電話料金は _monthlyBandwidth_ × 600 (円)
-> - _monthlyBandwidth_ >= 5.0 のとき、携帯電話料金は 3000 (円)
+> - 月間転送量 < 5.0 (GB) のとき、携帯電話料金は 月間転送量 × 600 (円/GB)
+> - 月間転送量 >= 5.0 (GB) のとき、携帯電話料金は 3000 (円)
diff --git a/src/components/Term/definitions.js b/src/components/Term/definitions.js
index ba179832d..68e050f40 100644
--- a/src/components/Term/definitions.js
+++ b/src/components/Term/definitions.js
@@ -4,10 +4,12 @@ export default {
"/docs/trial-session/html/": "HTML",
"/docs/trial-session/javascript/": "JavaScriptことはじめ",
"/docs/trial-session/expressions/": "値と式と演算子",
+ "/docs/trial-session/expressions/#いろいろな演算子": "いろいろな演算子",
"/docs/trial-session/variables/": "変数",
"/docs/trial-session/boolean/": "論理値と論理演算子",
"/docs/trial-session/if-statement/": "条件分岐",
"/docs/trial-session/functions/": "関数",
+ "/docs/trial-session/functions/#モジュール化": "モジュール化",
"/docs/trial-session/css/": "ウェブサイトの見た目を整える",
"/docs/trial-session/object/": "オブジェクト",
"/docs/trial-session/dom/": "DOM",
@@ -165,7 +167,7 @@ export default {
},
javascriptExpression: {
name: "式 (JavaScript)",
- definition: "JavaScript において、値を生成するまとまり。",
+ definition: "JavaScript において、計算・処理されて値を生成するまとまり。",
referencePage: "/docs/trial-session/expressions/",
},
javascriptEvaluation: {
@@ -179,6 +181,11 @@ export default {
"複数の演算子を含む式の評価順序を決定するための指標。例えば、乗算演算子は加算演算子より優先順位が高いため、 3 + 4 * 5 は 3 + (4 * 5) と評価される。",
referencePage: "/docs/trial-session/expressions/",
},
+ javascriptStringConcatenation: {
+ name: "文字列の結合",
+ definition: "文字列に加算演算子を使うと、一個目の文字列の後ろに二個目の文字列が追加される。",
+ referencePage: "/docs/trial-session/expressions/#いろいろな演算子",
+ },
javascriptVariable: {
name: "変数",
definition: "JavaScriptで値を一時的に保存しておくための入れ物。",
@@ -256,6 +263,11 @@ export default {
definition: "変数が有効な範囲",
referencePage: "/docs/trial-session/functions/",
},
+ javascriptModularization: {
+ name: "モジュール化",
+ definition: "ひとまとまりの煩雑なものや操作を一つにまとめて、コードを複数のブロックに分解すること。",
+ referencePage: "/docs/trial-session/functions/#モジュール化",
+ },
javascriptObject: {
name: "オブジェクト (JavaScript)",
definition: