You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组以字符串元素形式传入函数?(语法错误:Unexpected token '&')

问题

我尝试将imageSrcs数组以带引号的元素形式传入函数,但始终无法实现,还报错:Uncaught SyntaxError: Unexpected token '&'。想要达到的目标效果是:

initializeSlider($(".slider-1"), ["data:xxxxxxxxxxxxx", "data:xxxxxxxxxxxxx", "data:xxxxxxxxxxxxx"]);

我的代码示例如下:

<%  for (let i = 0; i < posts.length; i++) {
  let imageSrcs = [];

  for (let j = 0; j < posts[i].images.length; j++) {
      let imageSrc = '"' + `data:image/${posts[i].images[j].image.contentType};base64, ${posts[i].images[j].image.data.toString('base64')}` + '"';
      imageSrcs.push(imageSrc);
  } %>
  initializeSlider($(".slider-<%= i+1 %>"), <%= imageSrcs %>);

<% } %>
解决方法

问题根源在于:你手动给数组元素添加双引号后,直接输出数组时,EJS会把双引号转义成&quot;,这就是报错里&字符的来源。

正确的做法是不要手动给元素加引号,直接将原始的data URI字符串存入数组,然后用JSON.stringify()把整个数组转换成符合JavaScript语法的字符串后再输出:

修改后的代码:

<%  for (let i = 0; i < posts.length; i++) {
  let imageSrcs = [];

  for (let j = 0; j < posts[i].images.length; j++) {
      // 直接存储原始的data URI字符串,无需手动添加引号
      let imageSrc = `data:image/${posts[i].images[j].image.contentType};base64, ${posts[i].images[j].image.data.toString('base64')}`;
      imageSrcs.push(imageSrc);
  } %>
  // 用JSON.stringify生成标准的JS数组格式字符串
  initializeSlider($(".slider-<%= i+1 %>"), <%= JSON.stringify(imageSrcs) %>);

<% } %>

为什么这样能解决问题:

  • JSON.stringify()会自动为字符串元素添加双引号,同时处理所有需要转义的特殊字符,生成完全符合JavaScript语法的数组结构。
  • 这样就避免了手动拼接引号导致的HTML转义问题,EJS输出JSON.stringify的结果时,会直接输出正确的字符串格式,不会把双引号转成&quot;。

内容的提问来源于stack exchange,提问作者duruburak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:52:14