teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

let、const宣言ではできないことの強調と、var宣言は今後あまり使わない方がいいことを追記

2020/04/30 02:16

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  ```
14
14
  こうすることによって、ルートに宣言されるため、
15
15
  `num1`などの変数名のみで呼び出せます。
16
- (`let`ならびに`const`での宣言は、ルートでの宣言であっても、`window`オブジェクトのプロパティとはならない)
16
+ (`let`ならびに`const`での宣言は、ルートでの宣言であっても、`window`オブジェクトのプロパティとはならない。つまり、上記の宣言の仕方はできない
17
17
 
18
18
  # Object.definePropertyを使う方法
19
19
  これは、第一引数のオブジェクトのプロパティとして、定数(constで定義したと同じような仕様の変数)を定義するものです。
@@ -30,5 +30,6 @@
30
30
  }
31
31
  ```
32
32
 
33
- ただし、上記はいずれも、`var`宣言を使う、スコープ汚染をさせやすい宣言の仕方ため、
33
+ ただし、上記はいずれも、`var`宣言を使う、スコープ汚染をさせやすい宣言の仕方であるなど、仕様的に様々な面で虚弱になるため、
34
+ (上記いずれも、`let`、`const`での変数宣言とはならない)
34
- やるべきではないと個人的には思います。
35
+ 今後はやるべきではないと個人的には思います。

1

var宣言時も、ルートに宣言されることを追記など、全体的に間違っている部分を修正

2020/04/30 02:16

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -3,8 +3,8 @@
3
3
  jQueryの質問タグがあることから、ウェブブラウザ実行のJSとします。
4
4
 
5
5
  # windowオブジェクトのプロパティとして定義
6
- ウェブブラウザの場合、すべての変数は、
6
+ ウェブブラウザ実行の場合、すべての変数は、
7
- ルートに宣言している限り、`window`オブジェクトのプロパティとして宣言されるので、
7
+ `var`で宣言している、宣言子を使わないで変数宣言している場合、`window`オブジェクトのプロパティとして宣言されるので、
8
8
  `[]`を使い、プロパティ名に文字列を使います。
9
9
  ```javascript
10
10
  for (var i = 0; i < 10; i++) {
@@ -13,6 +13,7 @@
13
13
  ```
14
14
  こうすることによって、ルートに宣言されるため、
15
15
  `num1`などの変数名のみで呼び出せます。
16
+ (`let`ならびに`const`での宣言は、ルートでの宣言であっても、`window`オブジェクトのプロパティとはならない)
16
17
 
17
18
  # Object.definePropertyを使う方法
18
19
  これは、第一引数のオブジェクトのプロパティとして、定数(constで定義したと同じような仕様の変数)を定義するものです。
@@ -27,5 +28,7 @@
27
28
  value: i // 値
28
29
  });
29
30
  }
31
+ ```
30
32
 
33
+ ただし、上記はいずれも、`var`宣言を使う、スコープ汚染をさせやすい宣言の仕方のため、
31
- ```
34
+ やるべきではないと個人的には思います。