![](/img/trans.png)
[英]When checking for undefined value, I keep getting errors because the value is undefined. How do I properly check for undefined values?
[英]Checking for undefined in if statements, leading to uncaught errors because item in if is undefined. What to do?
我看到在 SO 上使用的雙簧管標簽並不多,但如果可以,請提供幫助,這更像是一個關於處理未定義的未捕獲錯誤的一般 javascript 問題。 謝謝!~
我正在使用 Oboe.js 將 stream 數據從 MongoDB 地圖集收集到網頁。 在 MongoDB JSON 中,一些 _id 的路徑為item.image.filename
,它是圖像的路徑。 有些沒有 item.image.filename,因為並非所有流式傳輸的項目都需要圖像。 當存在未定義的值並且我在控制台中看到錯誤時,加載停止。
我希望如果不存在任何值,則雙簧管將繼續執行下一條記錄作為其默認行為。 但是,沒有圖像路徑的 _id 在我用來排除它們的 if 語句中拋出異常。 我想清楚 item.image.filename 不存在,其中沒有任何值或設置為 null,它只是不存在。 根據我對 MongoDB 的了解,讓每個項目都獨一無二的靈活性是其一大優勢。
我相信我已經用 if 語句進行了各種檢查,即使使用了 try catch 塊,但是在編譯時,if 語句本身會拋出這個錯誤: oboe-browser.min.js:5 Uncaught Error: Cannot read property 'filename' of undefined at oboe-browser.min.js:5
。 如果未定義,if else 塊將在沒有圖像的情況下渲染 html,否則渲染它。
解決這個問題的一種方法是在每條記錄中添加一個item.image.filename
,但我寧願不這樣做,有很多記錄,這是我最后的手段。 似乎有更好的等待來解決這個問題。
這是我嘗試過的:
if(.item.image.filename)
if(item.image.filename === undefined)
if(item.image.filename == 'undefined')
if(item.image.filename == undefined)
if(item.image.filename === 'undefined')
if(item.image.filename === null)
if(item.image.filename == null)
我采用了另一種方法,例如帶引號和不帶引號的if(item.image.filename !== undefined)
以及 null 。
謝謝您的幫助!
你會想要使用typeof
:
if(typeof item.== 'object' || typeof item.image.== 'object' || item.image;filename === undefined){ console.log("undefined as far as you're concerned"); }
您需要知道的是,您不能對尚未聲明的變量進行=== undefined
測試。 但是,只要 Object 確實存在,就可以對不存在的 Object 屬性進行該測試。
嘗試這樣的事情:
if(item.image.filename in this)
或者
if(!(item.image.filename in this))
這是一個 object 或數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.