簡體   English   中英

為什么這個簡單的javascript語句不能用於檢查變量是否存在?

[英]Why doesn't this simple javascript statement work to check if the variable exists?

我正在處理一些返回JSON數據。

有時JSON會返回我可以訪問的內容

 var new_insert_id = data['internal']['new_insert_id'];

但有時這部分json數組數據根本不會被返回,所以我需要跳過這個被設置的變量。

所以我在嘗試設置變量之前寫了一個簡單的檢查來確保這些數據存在:

 if(typeof data['internal']['new_insert_id'] != 'undefined')
 {
     // if data['internal']['new_insert_id'] is defined, then..
     var new_insert_id = data['internal']['new_insert_id'];
 }

但是當JSON返回並且沒有new_insert_id時,我收到以下錯誤:

Uncaught TypeError: Cannot read property 'new_insert_id' of undefined 

它指出的代碼行是罪魁禍首是我的if語句的一行。

我錯過了什么? 我以為我的if語句會檢查它是否存在,或者在使用數組時是否需要做其他事情?

此外,您可以首先檢查data['internal'] ,但您也可以使用pythonic方式,即應用try/catch塊:

try {
    var new_insert_id = data['internal']['new_insert_id'];
} catch (e) {}

您編寫的語句檢查“internal”中是否存在new_insert_id屬性,但不檢查data變量中是否存在“internal”。 這應該更好:

if(typeof data['internal'] != 'undefined' && typeof data['internal']['new_insert_id'] != 'undefined')
{
     var new_insert_id = data['internal']['new_insert_id'];
}

錯誤消息說, data['internal']已經是未定義的。 你需要先檢查一下:

if(typeof(data['internal']) != 'undefined' && typeof data['internal']['new_insert_id'] != 'undefined')

你需要檢查data['internal'] !== undefined first :)

在測試中,您正在測試data['internal']的屬性['new_insert_id']是否未定義,然后您無法訪問它,因為data['internal']未定義,因此您得到的錯誤。

您首先要檢查data['internal']是否未定義。

我認為這是因為data['internal']未定義。

所以你需要先檢查data['internal']

if(data['internal'] && data['internal']['new_insert_id'])
 {
     // if data['internal']['new_insert_id'] is defined, then..
     var new_insert_id = data['internal']['new_insert_id'];
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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