Skip to content

Commit 1153079

Browse files
committed
「変数のスコープ」の項をリライト
1 parent 27d5138 commit 1153079

File tree

1 file changed

+33
-31
lines changed

1 file changed

+33
-31
lines changed

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

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -103,62 +103,64 @@ document.write(multiply(3, 4));
103103

104104
## <Term>変数</Term>の<Term>スコープ</Term>
105105

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

109-
{/* prettier-ignore */}
110-
<Term>関数</Term>外で<Term>宣言</Term>された<Term>変数</Term>は<Term>関数</Term>内でも利用できます。
110+
次の例では、<Term>関数</Term>`greet`の中で<Term>変数</Term>`message`を宣言しています。
111+
112+
```javascript
113+
function greet() {
114+
let message = "Hello!";
115+
document.write(message); // Hello! と表示される
116+
}
117+
118+
greet();
119+
```
120+
121+
ここで、<Term>関数</Term>の外側から`message`を利用しようとするとエラーになります。
122+
123+
```javascript
124+
function greet() {
125+
let message = "Hello!";
126+
}
127+
128+
greet();
129+
130+
// document.write(message); これはエラーになる
131+
```
132+
133+
一方で、<Term>関数</Term>の外側で宣言された<Term>変数</Term>を<Term>関数</Term>の内側から利用することは可能です。
111134

112135
```javascript
113136
let guestCount = 0;
114137

115138
function greet() {
116-
guestCount += 1;
117-
document.write("あなたは" + guestCount + "人目のお客様です。");
139+
guestCount = guestCount + 1;
140+
let message = "あなたは" + guestCount + "人目のお客様です。";
141+
document.write(message);
118142
}
119143

120144
greet(); // あなたは1人目のお客様です。
121145
greet(); // あなたは2人目のお客様です。
122146
```
123147

124-
この例における、`greet`<Term>関数</Term>は、呼び出されるたびに`guestCount`に1を加えています。
125-
126148
:::tip[複合代入演算子]
127149

128150
[**複合代入演算子**](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) は、計算と代入を同時に行うことができる演算子です。
129151

130152
`x += y`は、`x = x + y`という意味になります。他にも`-=``*=`などの演算子が定義されています。`x -= y``x = x - y``x *= y``x = x * y`という意味になります。
131153

132-
```javascript
133-
guestCount += 1;
134-
```
135-
136-
は以下の文のように読み替えられます。
154+
上の例の
137155

138156
```javascript
139157
guestCount = guestCount + 1;
140158
```
141159

142-
:::
143-
144-
:::warning[<Term>変数</Term>の<Term>**スコープ**</Term>]
145-
146-
{/* prettier-ignore */}
147-
<Term>スコープ</Term>が終わった<Term>変数</Term>は、その時点で破棄されます。
160+
は以下のように書き換えることができます。
148161

149162
```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
158-
}
159-
160-
increment();
161-
increment();
163+
guestCount += 1;
162164
```
163165

164166
:::

0 commit comments

Comments
 (0)