如何检查变量是否已设置并存在于javascript中?

时间:2015-12-25 11:00:36

标签: javascript variables undefined

我在json数据之下:

{
  "ID": [
    "The i d field is required."
  ],
  "terms_condition": [
    "The terms condition field is required."
  ]
}

并存储在变量中:

var DataJson = data.responseText;
var Json = JSON.parse(DataJson);

var IdError = Json.ID[0];
var TermsConditionError = Json.terms_condition[0];

现在,当Uncaught TypeError: Cannot read property '0' of undefined不是ID

时,我收到此错误exists

我已尝试使用此示例来防止错误处理。

if (typeof Json.ID[0] !== 'undefined') {
    alert('validation message found');
} else {
    alert('validation message not found');
}

但这不知道我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:2)

试试这个。

 if (Json !=undefined && typeof Json.ID[0] != undefined ) {
        alert('validation message found');
    } else {
        alert('validation message not found');
    }
  

TypeError:无法读取属性' 0'未定义的

当主json对象为空或未定义时,会发生此错误。当json对象中没有数据时会发生这种情况。

答案 1 :(得分:1)

要检查变量或字段是否已定义,您可以将其与undefined

进行比较
if ((Json !== undefined) && (Json.ID !== undefined) && (Json.ID[0] !== undefined)) {
    alert('validation message found');
} else {
    alert('validation message not found');
}

我的代码中没有任何问题。请参阅下面的代码段。



var Json = JSON.parse('{"ID": ["The i d field is required."], "terms_condition": ["The terms condition field is required."]}');

var IdError = Json.ID[0];
var TermsConditionError = Json.terms_condition[0];

document.writeln(IdError + '<br>');
document.writeln(TermsConditionError + '<br>');
document.writeln('==================<br>');

function isDefined(Json) {
  return (Json !== undefined) && (Json.ID !== undefined) && (Json.ID[0] !== undefined);
}
  
var inputData = [
  undefined,
  {},
  {ID: ''},
  {ID: ['value']}
];

inputData.forEach(function(inputDaten) {
  document.writeln(JSON.stringify(inputDaten) + ': ' + isDefined(inputDaten) + '<br>');
});
&#13;
&#13;
&#13;

可能问题出在data.responseText