回答編集履歴

1 修正

NozomuIkuta

NozomuIkuta score 1214

2019/04/30 13:16  投稿

**3行目のコード**
単に変数`str`を宣言して、空の文字列を代入しているだけです。
宣言`let str`だけでも問題ありませんが、空文字列を代入しておいた方が「あぁ、あとで別の文字列を入れるのかな」と予想がつきます。
**6行目のコード**
`str = str + "*";`は「今の`str`に`"*"`を足して、もう一度`str`に代入」しています。
JavaScriptでは、文字列どうしを`+`で連結することができます。
**8行目のコード**
6行目と同じですが、こちらは改行文字`\n`を代入しています。
---
「図形をつくる」というよりも「`*`を、1行につき何文字(`width`)、何行(`height`)表示する」と考えるといいと思います。
必要な処理は、以下の通りです。
(1)1行分の文字列を作る(5~7行目)
(2)改行をいれる(8行目)
(3)(1)と(2)を必要な行数分繰り返す(4~9行目)
(1)をさらに分解すると、以下の通りです。
(1-1)変数`str`に保存されている文字列の末尾に文字`"*"`を追加する(6行目)
(1-2)次の処理のために、新しい文字列を変数`str`に再代入する(6行目)
> 試しに「str +」を消して、「str = "*";」「str = "\n";」としてみましたが、そうするとコンソールには何も表示されなくなります。
hayamine1111さんが試したのは、以下のような処理になり、最終的にheigh分の改行文字だけになり、コンソールには、一見して何もないように見えます。
hayamine1111さんが試したのは、以下のような処理になり、最終的改行文字だけになり、コンソールには、一見して何もないように見えます。
(1-1)`str`に`"*"`を代入する(上書きする)
(1-2)`str`に`"\n"`を代入する(上書きする)

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る