未捕获的语法错误:标识符"html"已被声明



我不明白为什么它会给我这个错误:

未捕获的语法错误:标识符"html"已在obtenerTipos.js:1:1)在obtenerTipos.js:1声明:

var xmlHttp = new XMLHttpRequest();
xmlHttp.open(
"GET",
"http://localhost:8080/recetarioappmain/sistema/API/tipos.php",
false
); // false for synchronous request
xmlHttp.send(null);
//console.log(xmlHttp.responseText);
//Convertimos en objeto
var resultadoTipos = JSON.parse(xmlHttp.responseText);
//console.log(resultadoTipos);
var html = '<option value="">Seleccione un tipo</option>';
for (var i = 0; i < resultadoTipos.length; i++) {
html +=
'<option value="' +
resultadoTipos[i].id +
'">' +
resultadoTipos[i].nombre +
"</option>";
}
document.getElementById("id_tipos").innerHTML += html;

有人可以帮助我吗?我看不出发生了什么。

谢谢

使用letconst时,只能在给定范围内声明一次变量,尝试再次执行此操作将引发此类错误。 当您尝试重新声明相同的变量时,var不会引发错误,因为它的工作方式与let略有不同。因此,为了回答您的问题,在代码中的某个地方,您已经声明了带有与var尝试重新声明的相同范围的letconst的 html。

通常,现在您不应该再使用 var,因为用var声明的变量的作用域是全局范围的,也可以是函数的作用域。这意味着当控制台尝试记录它时,此处a的变量是有效的,而b会抛出错误,因为它在 if 语句的块之外不存在。

if (someCondition) {
var a = 'someValue'
let b = 'someOtherValue'
}
console.log(a)
console.log(b)

这可能会导致代码出现问题,因为您可能会在无意时覆盖变量。letconst的作用域都限定为声明它们的块。

您可以在此处阅读有关var的更多信息:https://javascript.info/var

尝试重命名变量并替换所有实例以验证 Ivar 的解释

// var html = '<option value="">Seleccione un tipo</option>';
var my_unique_html = '<option value="">Seleccione un tipo</option>';

您是否尝试过将 html 更改为另一个名称?

最新更新