Javascript 无法获取已定义的密钥

Javascript 无法获取已定义的密钥,javascript,Javascript,假设响应是{“errmsg”:“Error_BB”}或{“msg”:“I am BB”} 我收到此警报: 错误表明该值未定义 为什么会这样,因为键似乎定义为可以确定比较条件 我不能抛出或产生警报味精。但是,如果key被替换为errmsg或msg(如注释中所示),则它会起作用。使用表达式jsonparsed.key则在jsonparsed对象处请求名为“key”的属性 要检索名称为var值的键,可以使用类似数组的表示法: throw ("Error says:"+jsonparsed[key]);

假设响应是
{“errmsg”:“Error_BB”}
{“msg”:“I am BB”}

我收到此警报:

错误表明该值未定义

为什么会这样,因为键似乎定义为可以确定比较条件


我不能抛出或产生警报味精。但是,如果key被替换为errmsg或msg(如注释中所示),则它会起作用。

使用表达式
jsonparsed.key
则在
jsonparsed
对象处请求名为
“key”
的属性

要检索名称为var值的键,可以使用类似数组的表示法:

throw ("Error says:"+jsonparsed[key]);
或使用评估功能:

throw ("Error says:"+eval("jsonparsed."+key));

那么,
jsonparsed
没有属性
key
,是吗?正如您所说,它要么有
errmsg
要么有
msg
。因此,
jsonparsed.key
未定义的
也就不足为奇了

如果要访问名称包含在变量中的属性,必须使用括号表示法:

obj[prop]
但是还有更多:
Object.getOwnPropertyNames
返回属性名的数组。虽然
“errmsg”==key
可能由于隐式类型强制而起作用,但您确实希望获取数组的第一个元素:

var key = Object.getOwnPropertyNames(jsonparsed)[0]; // get first element

if("errmsg" === key) {
    throw ("Error says:"+jsonparsed[key]);
}
else {
    alert("Data says:"+jsonparsed[key]);
}

钥匙的确切内容是什么?这不是一个数组吗?
var key = Object.getOwnPropertyNames(jsonparsed)[0]; // get first element

if("errmsg" === key) {
    throw ("Error says:"+jsonparsed[key]);
}
else {
    alert("Data says:"+jsonparsed[key]);
}