2017-04-21 15 views
1

私のコードには2つのモードがあります。モードによっては、data_holderが非常に異なる場合があります。Safariで評価するコードはありません:TypeError:未定義はオブジェクトではありません

私は以下のコードを持っています。

if (mode == 1) { 
    trials[i]['material'][k]['named'] = data_holder[a]['segmentation']['named'] 
// more stuff that works fine.   

} else if (mode == 2) { 
    // more stuff that works fine 

}

私はChromeとSafariの両方でテストしています。両方のモードでChromeで正常に動作します。 モード1はサファリでも動作しますが、モード2では次のエラーが発生します。奇妙なことに、発生したエラーは実行すべき部分にはありません。

TypeError: undefined is not an object (evaluating 'data_holder[a]['segmentation']')

なぜそれが評価されdata_holder [A] [「セグメンテーション」]それはif文のそのセクションにすることになっていないとき?

+0

フォーマットを修正し、サンプル入力を行ってください。また、実行可能なスニペットとして挿入すると役立ちます。 * data_holder *はどこに定義されているか、値を割り当てられていますか?その価値は何ですか?なぜ変数が宣言されていないのですか? – RobG

+0

エラーを再現する最も重要な部分にコードを減らすことはできますか? –

+0

@ハッセンされました。 –

答えて

0

は、Safariのコンソールでこのコードを貼り付けてみ、それが正常に動作します:

trials = [] 
data_holder = {} 
mode = 2 

if (mode == 1) { 
    trials[i]['material'][k]['named'] = data_holder[a]['segmentation']['named'] 
// more stuff that works fine.   

} else if (mode == 2) { 
    // more stuff that works fine 
    console.log("safe"); 
} 

はおそらく何か他のものは、それはあなたが期待するよう2に設定されていないモードを引き起こして起こっています。

関連する問題