@@ -103,62 +103,63 @@ 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
113136let guestCount = 0 ;
114137
115138function greet () {
116- guestCount += 1 ;
139+ guestCount = guestCount + 1 ;
117140 document .write (" あなたは" + guestCount + " 人目のお客様です。" );
118141}
119142
120143greet (); // あなたは1人目のお客様です。
121144greet (); // あなたは2人目のお客様です。
122145```
123146
124- この例における、` greet ` <Term >関数</Term >は、呼び出されるたびに` guestCount ` に1を加えています。
125-
126147:::tip[ 複合代入演算子]
127148
128149[ ** 複合代入演算子** ] ( 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 ) は、計算と代入を同時に行うことができる演算子です。
129150
130151` x += y ` は、` x = x + y ` という意味になります。他にも` -= ` や` *= ` などの演算子が定義されています。` x -= y ` は` x = x - y ` 、` x *= y ` は` x = x * y ` という意味になります。
131152
132- ``` javascript
133- guestCount += 1 ;
134- ```
135-
136- は以下の文のように読み替えられます。
153+ 上の例の
137154
138155``` javascript
139156guestCount = guestCount + 1 ;
140157```
141158
142- :::
143-
144- :::warning[ <Term >変数</Term >の<Term >** スコープ** </Term >]
145-
146- { /* prettier-ignore */ }
147- <Term >スコープ</Term >が終わった<Term >変数</Term >は、その時点で破棄されます。
159+ は以下のように書き換えることができます。
148160
149161``` 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 ();
162+ guestCount += 1 ;
162163```
163164
164165:::
0 commit comments