このコードで何が問題になっていますか?私が取得:未定義の変数に関連するエラー
例外TypeError:古いが
(範囲3のうち10)
定義されていませんが、古いが最初に定義されていますvar older = people[0]
function person(name, age) {
this.name=name;
this.age=age
}
function foo() {
var older10 = function(people) {
var older = people[0];
for (var index = 1; index < 10; index++) {
if (people[index].age > older.age) {
older = people[index]; // error here
}
}
return older;
};
var array = [];
array[1] = new person("Paul", 23);
array[2] = new person("Jim", 24);
array[3] = new person("Sam", 84);
array[4] = new person("Rob", 54);
array[8] = new person("Karl", 19);
array[9] = new person("", 0);
var older = older10(array);
if (older.name === "Sam") {
console.log("ok");
}
}
'' people [0] '(' array [0] ')を決して定義しないので、' var older = people [0]; 'は' older'に 'undefined 'を割り当て、' older.age'は失敗します。このようにインデックス、長さ( 'index <10')をハードコードしないでください。項目を配列に追加したい順に追加し、配列を繰り返し処理します。 'people.length'で現在の長さを取得します。配列についての詳細:https://developer.mozilla.org/ja/JavaScript/Guide/Predefined_Core_Objects#Array_Object –
あなたの '//ここはエラーです。 'は間違った場所にあります。実際には、条件の上にある行ですそれは 'old.age'への呼び出しです。 – Arth