簡體   English   中英

檢查 if 語句中的未定義,導致未捕獲的錯誤,因為 if 中的項目未定義。 該怎么辦?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM