🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

861閲覧

JavaScript for文について

noko0505

総合スコア4

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/11/26 01:30

編集2020/11/26 02:09

いつもご回答ありがとうございます。
JavaScript の変数でつまずいてしまったので教えていただきたいです。
出典は「progate,JavaScriptコース13(2)」です。

質問内容

 回答のコードでは、最初にconst=character(s) を定義しているのに、for文のなかで、
別の定数 character に定義し直しているのはなぜでしょうか。

私のコードでは、再定義せず、最初に定義したcharacter(s)を使いまわしていますが、
出力結果は回答と同じです。

ご存知の方いらっしゃいましたら、ご教示いただきたいです。

回答のコード

JS

1コード 2const characters = [ 3 {name: "にんじゃわんこ", age: 14}, 4 {name: "ひつじ仙人", age: 100}, 5 {name: "ベイビーわんこ", age: 5}, 6]; 7 8// for文を完成させてください 9for (let i = 0; i < characters.length; i++) { 10 console.log("--------------------"); 11 12 // 定数characterを定義してください 13 const character = characters[i]; 14 15 // 「名前は〇〇です」を出力してください 16 console.log(`名前は${character.name}です`); 17 18 // 「〇〇歳です」を出力してください 19 console.log(`${character.age}歳です`); 20

### 自分のコード

JS

1const characters = [ 2 {name: "にんじゃわんこ", age: 14}, 3 {name: "ひつじ仙人", age: 100}, 4 {name: "ベイビーわんこ", age: 5}, 5]; 6 7// for文を完成させてください 8 9for (let i=0 ; i <characters.length ; i ++) { 10 console.log("------------------------------"); 11 12 console.log(`名前は${characters[i].name}です`); 13 14 console.log(`${characters[i].age}歳です`); 15 16 17 18 19} 20

私の考え

変数iを決定した後、文章にcharacter(s)をそのまま埋め込むと、
インデックス番号の指定まで書く必要があるので、characterに再定義することで
埋め込む定数をスッキリさせられるからだと考えています。

ご回答よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2020/11/26 01:38

JavaとScriptの間にスペースを入れないでください。 別の言語の話になってしまいます。 JavaScriptが正式名称なので、 誤表記は無くすようにしましょう。
m.ts10806

2020/11/26 01:39

出典は何でしょう
coco_bauer

2020/11/26 01:40

質問者が考えていらっしゃるとおりだと思います。特に多次元配列の場合は複数のインデックスを指定しなくてはならないので、コードの見通しが悪くなりますから。 まぁ、好みの問題ではありますが。
m.ts10806

2020/11/26 01:41

「回答のコードを作った人」に意図を聞いては。本来の意図は書いた人にしか分からないかと。 他人があれこれ想像したところで作った人の意図と合致するとは限りません。 自分が納得すれば良いのでしたら、さらに赤の他人に聞く必要もないと思います。
noko0505

2020/11/26 01:41

ご指摘ありがとうございます。 ご指摘の通り、JavaScriptと変更させていただきました。
noko0505

2020/11/26 01:46

様々な回答をありがとうございます。 動くのであれば特に問題ということですね。 コードは書く人それぞれで、書き方の意図は本人にしかわからないということでよろしかったでしょうか。
m.ts10806

2020/11/26 01:54

要件満たしていればそれは「正しいコード」です。コードにコメントも何もないなら書いた人にしか意図が分からないのは、申し訳ないが当然です。 コードは書いた通りにしか動かないからです。 なので「おそらく」「たぶん」としか他人には言えないのです。 出典不明のコメント無しコードなのでなおさらです。
noko0505

2020/11/26 02:03 編集

たしかに、コードだけで意図をくみ取るのは不可能ですね。 コメントの大事さがようやく理解できました。 出典はプロゲートで、コメントはコードを読むのに見にくいと思い、 消してしまったので、更新しておきます。 次回からは、出典、コメントも載せて質問させていただきます。 m.ts10806さんいつもご指導ありがとうございます。 これからもよろしくお願い致します。
m.ts10806

2020/11/26 02:10

たまにオンライン学習サイトのコードを質問に持ってくる方はいますが、「問い合わせたら?」という感想しかもてません。 「どう組んだら良いか」「起きた不具合の対応」なら他者でも要件きっちりあれば対応可能ですが、組まれたコードに対する意図を聞くのは、結局両者モヤッとした終わり方にしかなりません。
noko0505

2020/11/26 02:17

質問すべきはコードの組み方であって、組まれたコードの意図ではないということですね。 おそらく業界なら常識なのでしょうが、まったく知りませんでした。 今回、知ることができとても勉強になりました。
otn

2020/11/26 03:17

> おそらく業界なら常識なのでしょうが、 「Aさんの意図はAさんに聞くべきであって、赤の他人のBさんに聞いてもAさんの意図が分かるはずは無い」 というのはあ、IT業界に限らないと思いますよ。
guest

回答3

0

ベストアンサー

(おそらく)再利用するために変数定義しているに過ぎません
論理的にも解釈しやすいですしね
もちろん質問者さんが提示されたものでも結構です

投稿2020/11/26 01:41

編集2020/11/26 01:42
yambejp

総合スコア116694

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/11/26 01:49

分割代入を使うとこんな感じでも for (let i = 0; i < characters.length; i++) { console.log("--------------------"); const {name,age} = characters[i]; console.log(`名前は${name}です`); console.log(`${age}歳です`); }
noko0505

2020/11/26 01:51

ご回答ありがとうございます。 見やすく書くなら、回答のコードのように書くほうがいいということですね。 大変勉強になりました。 ありがとうございます。
guest

0

別の定数 character に定義し直しているのはなぜでしょうか。

様々な理由がありますが、
記述量を減らせるのと、オブジェクト指向的な書き方を重視しているのかと。
(修正時に、要修正箇所を減らすため)

今回のような場面ではあまり恩恵を感じれないかと思いますが、
コード量が増えると、如実に有用な書き方になっていきます。

投稿2020/11/26 01:44

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noko0505

2020/11/26 01:55

ご回答ありがとうございます。 ご指摘のように、コード量が増えていくことで読みにくくなると 思うので、今回の回答のように工夫して書いてみようと思います。 ご回答ありがとうございました。
guest

0

それは別の変数を定義して、そこに代入してます
まあ、たんに作成者の好みでしょうね

投稿2020/11/26 01:37

編集2020/11/26 01:39
y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noko0505

2020/11/26 01:49

ご回答ありがとうございます。 皆様の指摘にあったように、動くのであれば作者の好みなのですね。 大変参考になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問