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