2016-09-23 38 views
1

我看了看這個問題:爲什麼在比較變量與未定義時會出現「變量未定義」錯誤?

How to determine if variable is 'undefined' or 'null'?

但它並沒有幫助。

我有以下代碼:

if (_modeID != 8 && _modeID != 9) 
     // do something 

_modeID定義並分配在一個單獨的文件中的值都在一起。

我遇到一個錯誤,出於某種原因,var _modeID = someIntVal;永遠不會執行,所以當上面的if語句運行時根本沒有_modeID

我擴大它是if (_modeID === null || _modeID === undefined || (_modeID != 8 && _modeID != 9)但仍引發以下錯誤:

ReferenceError - Java Script Error : '_modeID' is undefined

我希望第一個或第二個條件將評估爲true,在這種情況下,但顯然不是。任何人都可以闡明我做錯了什麼?

var _modeID = undefined; if (_modeID === undefined) ...不是簡單的if (_modeID === undefined) ...假設這兩個片段是「完整的」文件?

+1

[使用'typeof'(https://stackoverflow.com/questions/5113374/javascript-check- if-variable-exists-is-defined-initialized)如果你確實想知道是否定義了_modeID,但你應該問的真正問題是**爲什麼定義它的其他語句沒有運行,而且你還沒有發佈足夠的代碼來診斷這個問題。 – meagar

+0

你能談談更多關於這個單獨的文件,其中_modeID被定義?你能展示它的定義嗎?我懷疑它可能在其他地方的功能範圍內。 – sma

+0

'_modeID'在.cshtml Razor視圖文件中定義,如下所示:'var _modeID = @ Model.IntMode'。我們有一個列出報告(創建/設置這個值)的頁面,或者一個查找報告的搜索頁面。如果他們使用「搜索」頁面,則該變量不會被創建,因爲它直接將它們帶到報告中,而不是列出報告的頁面。說實話,這真的不是問題;這個變量實際上只用於我的問題中的單個檢查。該值不用於其他任何地方。 – sab669

回答

5

我一般看到有人檢查變量而不是變量本身的類型,即

if(typeof _modeID === 'undefined') { 
    ... 
} 
+2

* *原因*如果(_modeID === undefined)''如果'_modeID'是一個無法解析的符號(不在任何包含範圍中聲明)''會拋出'ReferenceError'。但是'if(typeof _modeID ===「undefined」)'即使'_modeID'無法解析也不會拋出;相反,'typeof _modeID'的結果是''undefined''。 –

+1

謝謝您的解釋@ T.J.Crowder – Quantastical

+0

This Works!謝謝 – sab669