2017-04-21 73 views
1

我的代碼有兩種模式。根據模式,data_holder可能會有很大的不同。Safari評估代碼它shoudn't:TypeError:undefined不是一個對象

我有以下代碼。

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也適用於safari,但模式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。

相關問題