0

javascript がこのタイプのエラーを返すのはなぜですか:

TypeError: Cannot use 'in' operator to search for 'active' in undefined

私がこのようなことをするとき

foo = [ 
          {link:"http1", active:"true"}, 
          {link:"http2", active:"true"}, 
          {link:"http3"}  
      ]

    var checker = function(){

        for(i=0; i<= foo.length; i++){ 
            if('active' in foo[i]){
                checked = true
            }
        }
    }

しかし、同じ foo オブジェクトを使用してコンソールでこれを行うと

'active' in foo[0]

それはtrueを返しますか?

4

1 に答える 1

2

エラーは、式foo[i]が未定義であることを示しています。これは、式未定義と評価されるためです。(ヒント: i = 4)。

自明なことに、問題は で再現可能で'active' in undefinedあり、ループは必要ありません。

この場合の原因は、ループの条件が正しくないことです: である必要がi < foo.lengthあるため、i0..4 ではなく 0..3 になります。

コードは、おそらくローカルi(RobG に感謝します!)、a break(checked が設定されている場合) を使用し、(推定グローバルを使用する代わりに) 関数から値を返し、および/または に置き換える必要がありArray.someます。

また、「タイプミス」として閉じます..

于 2014-09-05T23:54:50.670 に答える