Javascript 如何访问包含点的变量?
以下是我的剧本Javascript 如何访问包含点的变量?,javascript,Javascript,以下是我的剧本 var err=activityLocal.message; var text=""; var i; for (i = 0; i < err.length; i++) { text+= err[i].message +";"; } document.write(text); 但是输出是未定义的,似乎JS引擎与activityLocal.message变量中的点混淆了。如何解决此错误 如果您的意思是希望使用点作为变量名,那么这是不可能的 如果
var err=activityLocal.message;
var text="";
var i;
for (i = 0; i < err.length; i++) {
text+= err[i].message +";";
}
document.write(text);
但是输出是
未定义的
,似乎JS引擎与activityLocal.message
变量中的点混淆了。如何解决此错误 如果您的意思是希望使用点作为变量名,那么这是不可能的
如果要将其用作对象变量,可以通过
object.variableName
访问它。例如。假设您的对象名为myObj
,并且分配给该对象的变量名为myVar
,您可以通过以下调用访问它:myObj.myVar
。或者,您也可以使用for(或在现代JavaScript运行时环境中的foreach)迭代对象循环。您可以使用arraymap
函数在activityLocal.message
中循环所有消息,该函数将返回字符串数组,并使用arrayjoin
函数将它们连接起来,如下所示:
var err=[{
“消息”:“数据源'TestDataSource'的状态与服务器'manaed_server_4'上的此操作不兼容。”,
“严重性”:“故障”
}, {
“消息”:“数据源'TestDataSource'处于与服务器'managed_server_3'上的此操作不兼容的状态。”,
“严重性”:“故障”
}];
var text=err.map(函数(e){
返回e.message;
}).加入(“;”);
警报(文本)代码>在您的代码中,变量名有问题,它不应该包含点,这是非法的
var activityLocal_message = [{
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'manaed_server_4'.",
"severity": "FAILURE"
}, {
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'managed_server_3'.",
"severity": "FAILURE"
}];
var err=activityLocal_message;
var text="";
var i;
for (i = 0; i < err.length; i++) {
text+= err[i].message +";";
//console.log(err[i].message);
}
console.log(text);
如果有帮助的话,就去看看那辆车。看起来在数组循环中,值即将出现,问题可能是在html中设置它。
您真的有json吗?一根绳子?或者只是一个数组?activityLocal是一个数组,请使用activityLocal[index].message访问消息。看起来您正在将数组放入activityLocal.message中。您应该通过activityLocal.message[0].message调用第一个元素message。或者根据您的代码进行调整运行text+=err[i].message+“;”后使用单步调试时,变量text
的值是多少代码>?为什么要将原始变量activityLocal.message修改为activityLocal\u message,可能无法在原始代码中执行。在问题中,他在变量中明确提到了点,他可以通过activityLocal[“message”]访问该属性我想在不修改原始源代码的情况下回答问题。不更改变量名称是不可能的,因为我没有在java脚本中声明它,它是在服务中的其他地方定义的一个变量,我应该在java脚本中使用它,并且使用activityLocal[“message”]
会给我相同的输出,即未定义的
。
var activityLocal_message = [{
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'manaed_server_4'.",
"severity": "FAILURE"
}, {
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'managed_server_3'.",
"severity": "FAILURE"
}];
var err=activityLocal_message;
var text="";
var i;
for (i = 0; i < err.length; i++) {
text+= err[i].message +";";
//console.log(err[i].message);
}
console.log(text);
myObj.propName
// is equivalent to
myObj["propName"]