@@ -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-
115112function 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 */ }
0 commit comments