回答編集履歴

5

追記

2020/10/04 08:17

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -105,3 +105,7 @@
105
105
 
106
106
 
107
107
  本回答のような古典的な方法ですと、window オブジェクトに無数のプロパティを付与するだけでなく、再代入で意図せず書き換わる危険がありますので、冒頭でも述べたように、maisumakun さんの回答(``words``) を使うのが良いと思います。
108
+
109
+
110
+
111
+ 動くサンプル: [CODEPEN](https://codepen.io/AkitoshiManabe/pen/LYNwRJV?editors=1011)

4

改訂

2020/10/04 08:17

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
File without changes

3

改訂

2020/10/03 09:38

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -64,6 +64,14 @@
64
64
 
65
65
 
66
66
 
67
+ **おすすめはできません**(古典を知っていただく目的で回答します)
68
+
69
+ 要は「window オブジェクトそのものを 連想配列のように扱う」方法です
70
+
71
+ 前半のように var 宣言した上で以下のコードを試してみてください。
72
+
73
+
74
+
67
75
  ```
68
76
 
69
77
  var clk2 = function(button){

2

加筆

2020/10/03 09:38

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  3. 変数を文字列で扱う場合、``var`` 宣言で実装する方法はあります(古典的手法)。
16
16
 
17
- ``var``宣言すると windowオブジェクトのプロパティとなるので ``window["propName"]`` でアクセスできる。
17
+ グローバルスコープで ``var``宣言すると windowオブジェクトのプロパティとなるので ``window["propName"]`` でアクセスできる。
18
18
 
19
19
 
20
20
 

1

訂正

2020/10/03 09:31

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -70,9 +70,9 @@
70
70
 
71
71
  if( word && word.length === 1 ) {
72
72
 
73
- word = word.toUpperCase() + button.id;
73
+ //word = word.toUpperCase() + button.id;
74
74
 
75
-
75
+ word += button.id;
76
76
 
77
77
  console.log(`word = ${word}`);
78
78