繁体   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