• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javascript について質問です)

Javascriptについて質問です

このQ&Aのポイント
  • Javascriptについて質問です。for in文の動きと、引数を指定せずに動作する関数について教えてください。
  • 詳細な内容は質問文章を参照してください。質問1では、for in文がオブジェクトのプロパティを順番に取得するものであることを説明しています。質問2では、関数に引数を指定しない場合でも動作する理由について説明しています。
  • 質問3では、for in文の中でiを定義することについて疑問を持っています。私たちは、friendsオブジェクトに関連する変数を定義していないため、変数iがマッチしないと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> 質問3についてですが、friends[key].firstNameが何を表しているのか分からないです。 > 例えば、friends.fistNameではだめなんですか? friends には「steve」と「bill」の2つのオブジェクトが入っていますが、「fistName」というプロパティは入っていないので「friends.fistName」は存在していません(undefined になります)。 friends の中の steve の fistName、friends の中の bill の fistName をそれぞれ取り出したいのだからfriends["steve"].firstName、friends["bill"].firstNameを指定しなければいけません。 for (var key in friends) で key に「steve」と「bill」を順に入れているので friends[key].firstName で目的の値を取り出せるのです。

34ttta
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.3

まず、friendsについてですが、 friendsはsteveとbillを、 steveとbillはfirstNameやlastName等を持っています。 そしてsteveのfirstNameには"Steve"が、billのnumberには"080"が入っている、 ということを表しています。 つまり、キー名: 値 という形をネストしているということです。 for ( var key in object ) についてですが、 これはそのobjectが持っているキー名を順次keyに入れていくループ書式となります。 従って、 質問1はfriendsが持っているキー名、すなわちsteveとbillの2回ループすることになり、ループのiには"steve"や"bill"がそのまま入ってくることになります。 質問2は呼び出し元がわからないので割愛します。 質問3はオブジェクトのアクセスの仕方に対する理解を得たいのだと思います。 例えば、firendsのbillのnumberである"080"が参照したい場合、どのようにするのか、ということです。 "080"を取得したい場合、 friends.bill.number で取得できますが、 friends["bill"]["number"] でも取得できます。 もちろん組み合わせて friends.bill["number"] としても取得できます。 なので、for( key in friends ) で"steve"や"bill"がkeyに設定された場合、friends[key]とすればfriends["steve"]となってsteveにアクセスできるわけです。 JavaScriptのオブジェクトとは全て配列でその配列はインデックスにStringが使用できる、とでも考えるとわかりやすいと思います。(厳密には違いますが・・・)

34ttta
質問者

お礼

ありがとうございます。

  • int3
  • ベストアンサー率34% (65/190)
回答No.1

実行結果をだすにあたって実際に関数をコールしているところを書かないと答えられないと思いますよ。 質問1 : friendsのプロパティキーを列挙してます。なのでキー名のsteve, billがでます。 質問2 : 何もわたしてないなら思ったようにうごかないですよね。呼び出し元をかかないとわからないです。 質問3:iが定義されてないしなにがいいたいのかよくわからないです。もうちょっと詳しくかいたほうがいいと思います。

34ttta
質問者

補足

回答ありがとうございます。 質問3についてですが、friends[key].firstNameが何を表しているのか分からないです。 例えば、friends.fistNameではだめなんですか? 実行結果としては、friends内のfirstnameが表示されるのでしょうか? var search = function(name) { for (var key in friends) { if(friends[key].firstName== name){ console.log(friends[key]); return friends[key]; }

関連するQ&A