Skip to content

Commit 71f3bdd

Browse files
authored
「変数のスコープ」の項をリライト (#927)
1 parent fb66080 commit 71f3bdd

File tree

2 files changed

+38
-39
lines changed

2 files changed

+38
-39
lines changed

docs/1-trial-session/09-functions/index.mdx

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -104,65 +104,44 @@ document.write(multiply(3, 4));
104104
## <Term>変数</Term>の<Term>スコープ</Term>
105105

106106
{/* prettier-ignore */}
107-
<Term>関数</Term>内で<Term>宣言</Term>された<Term>変数</Term>は、<Term>関数</Term>内でのみ有効です。<Term>変数</Term>が有効な範囲のことを、その<Term>変数</Term>の<Term>**スコープ**</Term>と呼んでいます。
107+
<Term>関数</Term>やif文などの中で`let``const`を使って宣言された<Term>変数</Term>は、それらの内部でのみ有効です。<Term>変数</Term>が有効な範囲のことを、その<Term>変数</Term>の<Term>**スコープ**</Term>と呼んでいます。
108108

109-
{/* prettier-ignore */}
110-
<Term>関数</Term>外で<Term>宣言</Term>された<Term>変数</Term>は<Term>関数</Term>内でも利用できます。
109+
次の例では、<Term>関数</Term>`greet`の中で<Term>変数</Term>`siteName`を宣言しています。
111110

112111
```javascript
113-
let guestCount = 0;
114-
115112
function greet() {
116-
guestCount += 1;
117-
document.write("あなたは" + guestCount + "人目のお客様です。");
113+
const siteName = "田中のブログ";
114+
document.write("ようこそ、" + siteName + "へ!");
118115
}
119116

120-
greet(); // あなたは1人目のお客様です。
121-
greet(); // あなたは2人目のお客様です。
117+
greet(); // ようこそ、田中のブログへ! と表示される
122118
```
123119

124-
この例における、`greet`<Term>関数</Term>は、呼び出されるたびに`guestCount`に1を加えています。
125-
126-
:::tip[複合代入演算子]
127-
128-
[**複合代入演算子**](https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#%E4%BB%A3%E5%85%A5%E6%BC%94%E7%AE%97%E5%AD%90) は、計算と代入を同時に行うことができる演算子です。
129-
130-
`x += y`は、`x = x + y`という意味になります。他にも`-=``*=`などの演算子が定義されています。`x -= y``x = x - y``x *= y``x = x * y`という意味になります。
120+
ここで、<Term>関数</Term>の外側から`siteName`を利用しようとするとエラーになります。
131121

132122
```javascript
133-
guestCount += 1;
134-
```
123+
function greet() {
124+
const siteName = "田中のブログ";
125+
document.write("ようこそ、" + siteName + "へ!");
126+
}
135127

136-
は以下の文のように読み替えられます。
128+
greet(); // ようこそ、田中のブログへ! と表示される
137129

138-
```javascript
139-
guestCount = guestCount + 1;
130+
document.write(siteName); // これはエラーになる (Uncaught ReferenceError: siteName is not defined)
140131
```
141132

142-
:::
143-
144-
:::warning[<Term>変数</Term>の<Term>**スコープ**</Term>]
145-
146-
{/* prettier-ignore */}
147-
<Term>スコープ</Term>が終わった<Term>変数</Term>は、その時点で破棄されます。
133+
一方で、<Term>関数</Term>の外側で宣言された<Term>変数</Term>を<Term>関数</Term>の内側から利用することは可能です。
148134

149135
```javascript
150-
let outer = 0;
151-
152-
function increment() {
153-
let inner = 0;
154-
outer += 1;
155-
inner += 1;
156-
document.write(outer); // 1ずつ増える
157-
document.write(inner); // 常に1
136+
const siteName = "田中のブログ";
137+
138+
function greet() {
139+
document.write("ようこそ、" + siteName + "へ!");
158140
}
159141

160-
increment();
161-
increment();
142+
greet(); // ようこそ、田中のブログへ! と表示される
162143
```
163144

164-
:::
165-
166145
## 演習問題1
167146

168147
{/* prettier-ignore */}

docs/1-trial-session/10-loop/index.mdx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,26 @@ document.write(sum);
5959

6060
<ViewSource url={import.meta.url} path="_samples/answer-while" />
6161

62+
:::tip[複合代入演算子]
63+
64+
[**複合代入演算子**](https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#%E4%BB%A3%E5%85%A5%E6%BC%94%E7%AE%97%E5%AD%90) は、計算と代入を同時に行うことができる演算子です。
65+
66+
`x += y`は、`x = x + y`という意味になります。他にも`-=``*=`などの演算子が定義されています。`x -= y``x = x - y``x *= y``x = x * y`という意味になります。
67+
68+
上の例の`sum = sum + i;``i = i + 1;`は、それぞれ`sum += i;``i += 1;`のように読み替えられます。
69+
70+
```javascript
71+
let i = 1;
72+
let sum = 0;
73+
while (i <= 10) {
74+
sum += i;
75+
i += 1;
76+
}
77+
document.write(sum);
78+
```
79+
80+
:::
81+
6282
</Answer>
6383

6484
## for 文

0 commit comments

Comments
 (0)