Javascript について質問です
for in 文について質問です。(実行結果は一番下にあります。)
本当に分からなくて困っています。質問自体長く、お見苦しい点も多いと思いますが、皆様の力が必要なので、分かる方がおりましたら助けてくださると本当にありがたいです。
下記のように、friendsというオブジェクトを定義しました。
いまいち、オブジェクトの意味が理解できていないので、表層的なことしか理解できておりません。下記のプログラムは動きましたが、codeacademyというサイト上で動かしているので、少し実行結果が変わってしまい、よくわかりません。
質問(1):そこで質問なのですが、下記(真下)のプログラムは、どのような動きをしているのでしょうか。これは単純に、steve,jobsを出力するためのプログラムでしょか?
var list= function(friends){
for(var i in friends){
console.log(i);
}
}
質問2;こちらの関数についてですが、nameを引き渡していますが、プログラム上には何も定義していないのに、動きました。なぜ動くのでしょうか?
var search = function(name) {
for (var key in friends) {
if(friends[key].firstName== name){
console.log(friends[key]);
return friends[key];
}
}
};
質問3; search 関数の中で、for in 文の中にiを定義していますが、これは、単純にプロパティの個数文、for文を回すものと理解してもよろしいでしょうか。
私が気になっているのは、friends[i]となっても、friendsオブジェクトでそのような変数を定義していないので、マッチしないと思い、いまいち理解しきれません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
var friends={
steve: {
firstName: "Steve",
lastName: "jobs",
number: "090",
address: ["Apple fundor"]
},
bill: {
firstName: "Bill",
lastName: "Gates",
number: "080",
address: ["Microsoft fundor"]
}
};
var list= function(friends){
for(var i in friends){
console.log(i);
}
}
var search = function(name) {
for (var key in friends) {
if(friends[key].firstName== name){
console.log(friends[key]);
return friends[key];
}
}
};
ーーーーーーーーーーーーーーーーーーーーー実行結果ーーーーーーーーーーーー
{ firstName: 'Steve', lastName: 'jobs', number: '090', address: [ 'Apple fundor' ] }
{ firstName: 'Steve', lastName: 'jobs', number: '090', address: [ 'Apple fundor' ] }
{ firstName: 'Bill',
lastName: 'Gates',
number: '080',
address: [ 'Microsoft fundor' ] }
お礼
迅速なご対応ありがとうございます。 助かりました。(泣