2015-04-02 52 views
0

爲什麼typeof數組的數組的未定義值返回爲「未定義」,而不是我的條件認爲是真的?這是否與OR運算符或什麼有關。看起來像我的程序正在運行內部條件,即使它不應該在內部條件。爲什麼typeof數組的數組未定義的值返回爲「未定義」,而不是我的條件認爲是真的?

if(typeof elemData !== 'undefined' || typeof rich[elemData.value] !== 'undefined') { 

    if(typeof rich[elemData.value]['title'] !== 'undefined') { 
     //do something 
    } 

} 

程序返回如下:

> if(typeof rich[elemData.value]['title'] !== 'undefined') { 
> 
> TypeError: Cannot read property 'title' of undefined 

我檢查,如果rich[elemData.value]'undefined'和它說這不是通過我的條件。這是怎麼回事?

+1

什麼是類型錯誤與 '認爲真正的' 呢?等式表達式(被認爲扮演一個角色)*甚至從不執行*,因爲異常是先被拋出*。錯誤信息完全解釋了問題;打破異常並驗證/修復不正確的斷言。 – user2864740 2015-04-02 06:30:45

回答

5

當你需要和他們一起時,你正在對你的條件進行「或」。

if(typeof elemData !== 'undefined' || typeof rich[elemData.value] !== 'undefined') { 

應該是:

if(typeof elemData !== 'undefined' && typeof rich[elemData.value] !== 'undefined') { 
+0

這有效,但爲什麼? OR條件比AND更寬容。如果其中一個是真的,正確的話,OR可能是真的? – EhevuTov 2015-04-02 06:43:37

+0

是的,但爲了您的代碼工作,兩個條件必須是真實的,因此連接詞是連接詞。 – 2015-04-02 06:44:48

+0

這是由於數組屬性的內部屬性以及typeof運算符如何在undefined上工作?我想它的工作方式與我在C/C++之類的東西中所期望的不同,我對此很好奇。 – EhevuTov 2015-04-02 06:45:39

相關問題