【发布时间】:2023-03-22 16:05:02
【问题描述】:
我正在尝试使用从 DOM 中提取的信息制作导航栏,但我不断收到与 ES6 模板字符串(在本例中为嵌套)相关的错误,其内容为 “Uncaught SyntaxError: Missing } in template expression”
我对 ES6 语法很陌生。有什么建议吗?
function makeNavList() {
var myList = ``;
$("#superfish-1>li").each(function (index, value) {
myList += `<li>
<a href="#!">${$(value).find(">a").text()}</a>
<ul class="nav-dropdown">
<li><a href="${$(value).find("a").attr("href")}">${$(value).find(">a").text()} - All</a></li>
${
let collapselist= () =>{
let innerlist = "";
$("#superfish-1>li.ul>li").each(function(index, value){
let linkPath = $(value).find("a").attr("href");
let linkText = $(value).find("a").text();
innerlist += `<li>
<a href="${linkPath}">${linkText}</a>
</li>`
})
return innerlist;
}
}</ul>
</li>`
})
return myList
}
【问题讨论】:
-
我不知道 ES6,但你确定你在某处缺少
}吗?似乎从错误中暗示了这一点。 -
不能在
${}中声明变量 -
${}只能包含表达式,不能包含语句。 -
您试图在模板横向做太多事情。将它移出一个函数并让字面量调用该函数。即使那是一个单一的、有效的表达方式,但为了理智,它仍然太过分了。
-
是的!将函数声明移到模板文字之外就可以了!虽然也许我们应该被允许在那里发表声明.. ????
标签: javascript ecmascript-6 template-literals template-strings