2016-02-19 65 views
3

在IF語句讀取一個未定義的對象的性質我有一個簡單的if-else語句不能開玩笑

if(this.props.params.id){ 
    //do something 
} 

現在,這在瀏覽器中正常工作。 如果參數中有一個id,它將輸入if子句,如果沒有id,則不輸入。

現在同時用開玩笑寫測試,當ID沒有被定義它拋出一個錯誤: 「無法讀取屬性‘身份證’的未定義」 爲什麼會這樣,不應該是把它當作假的? 它在瀏覽器中正常工作,只是在測試中會引發錯誤。

回答

0

如果ID本身是不確定的,那麼你的測試工作正常(雖然有寫它的更好的方法)

你得到的問題是從this.props.params是不確定的。在這種情況下,您正嘗試訪問不存在的內容。

爲了解決這個問題,您需要檢查是否同時定義了兩個參數AND ID。

可以是這樣做的:

if (typeof this.props.params !== 'undefined' && this.props.params.id !== 'undefined') { 
    //do something 
} 

它好得多的typeof用於檢查未定義的變量,因爲它是可能的,如果你如果變量計算虛假陳述失敗。

+0

它也拋出一個錯誤'無法讀取undefined'的財產。 – Max

0

嘗試:

if(this.props.params){ 
    var id = this.props.params.id; 
}