回答編集履歴

1

もう一つ思いついたので追記

2018/03/03 01:14

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36134

test CHANGED
@@ -8,11 +8,7 @@
8
8
 
9
9
  function test(){
10
10
 
11
-
12
-
13
-
14
-
15
- if( ( id = getNewId() ) == null) return; else var id;
11
+ if( ( id = getNewId() ) == null) return; else var id; //else節で宣言しても巻き上げられる
16
12
 
17
13
  console.log(id);
18
14
 
@@ -35,3 +31,39 @@
35
31
  ```
36
32
 
37
33
  if...else...で1文とみなしていいのかが、ちょっと疑問ですが。
34
+
35
+  
36
+
37
+ ### もう一つ思いついたので追記
38
+
39
+ ```js
40
+
41
+ var id = 'hoge';
42
+
43
+
44
+
45
+ function test(){
46
+
47
+ if( ( eval('var id'), id = getNewId() ) == null) return; //eval関数で宣言してもスコープ内で定義される
48
+
49
+ console.log(id);
50
+
51
+ }
52
+
53
+
54
+
55
+ function getNewId(){
56
+
57
+ return null
58
+
59
+ }
60
+
61
+
62
+
63
+ test();
64
+
65
+ id; // 'hoge'
66
+
67
+ ```
68
+
69
+ 邪悪。