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

質問編集履歴

3

根本的な疑問点の明確化

2019/09/21 02:44

投稿

theplace
theplace

スコア24

title CHANGED
File without changes
body CHANGED
@@ -16,4 +16,9 @@
16
16
 
17
17
  ```eval('console.log(a.'+prop+')');```の中の```eval関数```の引数内のJavaScriptをそのまま書いただけなのにエラーになるのは意味がわかりませんでしたが、これはどうしてでしょうか。
18
18
 
19
- また、```eval```を用いずに純粋な```console.log```と変数```prop```を用いて変数aのプロパティ```hoge```の値を表示するにはどうしたらいいでしょうか(```console.log(a[prop]);```と書けば正常に表示できますが、evalで行ったように```+演算子```を用いて表現することはできないのでしょうか)
19
+ また、```eval```を用いずに純粋な```console.log```と変数```prop```を用いて変数aのプロパティ```hoge```の値を表示するにはどうしたらいいでしょうか(```console.log(a[prop]);```と書けば正常に表示できますが、evalで行ったように```+演算子```を用いて表現することはできないのでしょうか)
20
+
21
+ (補足)```eval('console.log(a.'+prop+')');```の中のpropの直前と直後の2つの```+演算子```の使い方が理解ができず(特に直後のプラスはわかりません)、調べても算術計算や文字列の連結でしか使っていないようなのですが、今回の```+演算子```はどのような構文・文法なのでしょうか。
22
+ 上記の```eval関数```ではシングルクウォート内に使っていますし、シングルクウォート内はJavaScriptとして解釈されるとしても```+演算子```の直前にピリオドがあるとピリオドの直後はプロパティを指定するのではないかとか、propの後の```+演算子```の後には何もないですし、文法的にどうなっているのでしょうか。
23
+
24
+ また、```eval```の処理過程で文字列が全てJavaScriptとして解釈されるのなら、そのJavaScriptをevalを使わずに書いても正常に実行されるのでは?と思ったのですがどうしてevalを外して、文字列にしているシングルクウォートも外してもうまくいかないのでしょうか。

2

補足質問を追記

2019/09/21 02:44

投稿

theplace
theplace

スコア24

title CHANGED
File without changes
body CHANGED
@@ -16,4 +16,4 @@
16
16
 
17
17
  ```eval('console.log(a.'+prop+')');```の中の```eval関数```の引数内のJavaScriptをそのまま書いただけなのにエラーになるのは意味がわかりませんでしたが、これはどうしてでしょうか。
18
18
 
19
- また、```eval```を用いずに純粋な```console.log```と変数```prop```を用いて変数aのプロパティ```hoge```の値を表示するにはどうしたらいいでしょうか
19
+ また、```eval```を用いずに純粋な```console.log```と変数```prop```を用いて変数aのプロパティ```hoge```の値を表示するにはどうしたらいいでしょうか(```console.log(a[prop]);```と書けば正常に表示できますが、evalで行ったように```+演算子```を用いて表現することはできないのでしょうか)

1

関連した質問内容を追記

2019/09/20 21:41

投稿

theplace
theplace

スコア24

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,6 @@
14
14
  ```
15
15
  はエラーになります。
16
16
 
17
- ```eval('console.log(a.'+prop+')');```の中の```eval関数```の引数内のJavaScriptをそのまま書いただけなのにエラーになるのは意味がわかりませんでしたが、これはどうしてでしょうか。
17
+ ```eval('console.log(a.'+prop+')');```の中の```eval関数```の引数内のJavaScriptをそのまま書いただけなのにエラーになるのは意味がわかりませんでしたが、これはどうしてでしょうか。
18
+
19
+ また、```eval```を用いずに純粋な```console.log```と変数```prop```を用いて変数aのプロパティ```hoge```の値を表示するにはどうしたらいいでしょうか。