javascript - 为什么这个简单的 javascript 语句不能检查变量是否存在?

标签 javascript

我正在处理一些返回的 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 block :

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

关于javascript - 为什么这个简单的 javascript 语句不能检查变量是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15112443/

相关文章:

javascript - 如何动态加载 facebook 之类的按钮?

javascript - HTML Mobile - 强制隐藏软键盘

javascript - 根据数组为文档中的所有跨度设置不同的字体颜色?

javascript - 使用 javascript 拆分 html 表值

javascript - 检查对象中是否存在对象键

javascript - 运行从 ecmascript 6 模块加载的函数

javascript - 如何在 Underscore 模板中存储 JSON 数据?

javascript - 列出列的下拉菜单

javascript - 函数内部的 setInterval 产生错误 : variable is not defined

javascript - React.JS 的 Superagent 响应范围问题