回答編集履歴

3

 

2025/01/12 09:06

投稿

kotori_a
kotori_a

スコア874

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  変数の「ホイスティング(巻上げ)」による影響(かつ、varを使っている影響)によります。
4
4
 
5
- 関数の中で宣言され変数は、その関数の先頭部分で宣言されたものと解釈されます(=巻上げ)。
5
+ 質問のコードの場合、関数fnの中でvarで宣言されている変数bookは、その関数fnの先頭部分で宣言されたものと解釈されます(=var/巻上げ)。
6
6
 
7
7
  たとえば、var book = 'book2’;がある場合、質問のコードは下記のように解釈されます。
8
8
  ```js

2

 

2025/01/12 09:03

投稿

kotori_a
kotori_a

スコア874

test CHANGED
@@ -14,6 +14,7 @@
14
14
  ```
15
15
 
16
16
  console.log(book); を実行する時点では、book は宣言されてるだけなので、undefinedになります。
17
+
17
18
   
18
19
   
19
20
  一方、var book = 'book2’;がない場合、具体的には
@@ -34,13 +35,14 @@
34
35
  > また、以下のコードの if(true)につきまして、もし〇〇がtrueの場合、a = ‘Hello’;を実行せよの意味だと理解しているのですが、以下の場合の〇〇は何になるのでしょうか?
35
36
 
36
37
  →「もし〇〇がtrueの場合」と言う部分は、正しくは
37
- 「if の括弧の中の評価結果が、偽値 (falsy) として定義された値 (つまり、false, 0, -0, 0n, "", null, undefined, NaN) を除くすべての値** の場合」です。
38
+ 「if の括弧の中の評価結果が、偽値 (falsy) として定義された値 (つまり、false, 0, -0, 0n, "", null, undefined, NaN) を除くすべての値 の場合」です。
38
39
 
39
- 質問のコードの場合 if()の括弧の中が、trueというfalsyではない (即値)なので、
40
+ 質問のコードの場合 if()の括弧の中が、trueというfalsyではない値なので、
40
41
  a = ‘Hello’ が実行されます。
41
42
 
42
- 「truthy」「falsy」については下記を見てください。
43
+ falsy」「truthy」については下記を見てください。
44
+ https://developer.mozilla.org/ja/docs/Glossary/Falsy
43
45
  https://developer.mozilla.org/ja/docs/Glossary/Truthy
44
- https://developer.mozilla.org/ja/docs/Glossary/Falsy
45
46
 
46
47
 
48
+

1

 

2025/01/12 08:56

投稿

kotori_a
kotori_a

スコア874

test CHANGED
@@ -1,6 +1,6 @@
1
1
  > 上記の実行結果は、var book = 'book2’;を入れますと、undefinedになってしまい、var book = 'book2’;がないと、実行結果は、book1になります。私の想定では、var book = 'book2’;がある場合でも、ない場合でも、実行結果は、book1となると思うのですが、なぜvar book = 'book2’;を入れますと、undefinedになるのでしょうか。
2
2
 
3
- 変数の「ホイスティング(巻上げ)」ってやつです。
3
+ 変数の「ホイスティング(巻上げ)」による影響(かつ、varを使っている影響)によります。
4
4
 
5
5
  関数の中で宣言された変数は、その関数の先頭部分で宣言されたものと解釈されます(=巻上げ)。
6
6