いちばん失敗した人決定戦

javascriptを基礎中の基礎から勉強しており、プログラミング超初心者です。

某書籍(一部、修正を加えています)の演習問題で、

const characters = [
{name: "息子", age: 14},
{name: "爺さん", age: 100},
{name: "弟", age: 5},
];

// for文を完成させてください
for (let i = 0; i < characters.length; i ++) {
console.log("--------------------");
// 定数characterを定義してください
const character = characters[i];

// 「名前は〇〇です」を出力してください
console.log(`名前は${character.name}です`);

// 「〇〇歳です」を出力してください
console.log(`${character.age}歳です`);
}

出力結果は

ーーーーーーーーーーーーーーー
名前は息子です
14歳です
ーーーーーーーーーーーーーーー
名前は爺さんです
100歳です
ーーーーーーーーーーーーーーー
名前は弟です
5歳です

と出ます。
書籍ではこちらが回答になっています。

私の回答は

const characters = [
{name: "息子", age: 14},
{name: "爺さん", age: 100},
{name: "弟", age: 5},
];

// for文を完成させてください
for (let i = 0; i < characters.length; i ++) {
console.log("--------------------");
// 定数characterを定義してください


// 「名前は〇〇です」を出力してください
console.log("名前は" + characters[i].name + "です");

// 「〇〇歳です」を出力してください
console.log(characters[i].age + "歳です");
}

と私は答えました。
出力結果は全く同じでした。

大きな違いは定数characterを定義していない点です。
出力上は同じですがこれは間違いなのでしょうか?
このまま次に進んではまずいのではと思い、不安です。

また、前文ではcharacterを定義しないとエラーになることは確認できましたが、
なぜエラーになってしまうのかがどうしても分かりませんでした。

丁寧に教えていただけると大変助かります。
よろしくお願いします。

A 回答 (2件)

| 出力上は同じですがこれは間違いなのでしょうか?



プログラムの動作が同じだという意味では、間違いではありません。
characterに入れてから、内容を使うのか(本にかいてある方法)
characters配列の内容を直接使うのかの違いですので、
そのあたりは好みの問題になってきます。

ただ、今回は問題に「定数characterを定義してください」とあるので、
定数characterを定義して利用するというのが正解でしょうね。
    • good
    • 0
この回答へのお礼

ありがとう

なるほど!
少しすっきりしました。

考えてみたらもっと発展させて出力させる場合、
chracters[i].nameと入力するより、
最初に定義をさせておいて
character.nameとやる方が出力を沢山要するときに入力する意味で楽なのかなと感じました。

そういう見解は間違っているのかもしれませんが、自分で納得してみます。
ありがとうございました!

お礼日時:2020/06/11 21:01

> // 定数characterを定義してください



という命題に対して、定義していなければ明らかに間違いです。
テストだと0点

ただし運用上絶対にcharacterがいるかといえばそんなことはありません
ドクターバランシェのように問題を見ると途中式がなく答えが
頭に浮かぶような人ならともかく、論理的な流れを追うような
解説なのでしょうから、この命題では必須でしょう
    • good
    • 0
この回答へのお礼

そうですね、根本的なとこから答えなければならないことに反省しております。
これでも同じ出力なのになぜ…と考えるばかりでずっと手が止まってしまいました。
現段階でこの極短いコードでもつまずくようなレベルなので、論理的に流れを追うような解説をしっかり身に着けるようにします。
アンサーありがとうございました。

お礼日時:2020/06/12 21:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!