2012-05-02 4 views
1

このコードで何が問題になっていますか?私が取得:未定義の変数に関連するエラー

例外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"); 
    } 
} 
+2

'' 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 –

+0

あなたの '//ここはエラーです。 'は間違った場所にあります。実際には、条件の上にある行ですそれは 'old.age'への呼び出しです。 – Arth

答えて

2

あなたはarray[0]を定義することはありません(people[0]と呼ばれますolder10(array)ファンクションコール内で)古いものは未定義に設定されています!

+0

これは本当ですが、修正すると次のようになります:* TypeError:people [index]は未定義です* –

+1

配列[5](および6,7)が存在しない可能性がありますか? –

+0

あなたはそうです、ありがとう! –

関連する問題