【问题标题】:Uncaught SyntaxError: Unexpected identifier within bookmarklet未捕获的 SyntaxError:书签中的意外标识符
【发布时间】:2021-07-04 20:20:37
【问题描述】:

我正在尝试将 jquery 注入页面以在书签中使用。我在回调的语法上遇到了一些问题,因为我在运行它时遇到了以下错误:

Uncaught SyntaxError: Unexpected identifier

代码如下。控制台中显示的错误看起来像是在我调用 createScript 函数的位置附近发生的。它有点难以分辨,因为代码都被弄脏了。当我粘贴到 JSLint 中时,它会显示以下消息:

预期的';'而是看到了“createScript”。

代码:

(function() {  
  console.log("Starting....");
  var createScript = function (url,callback) {
    /* Insert Datatables */                  
    var script_set = document.createElement("script");
    script_set.setAttribute("src", url);
    script_set.addEventListener("load", callback);
    document.body.appendChild(script_set);
  }
  
  createScript("https://code.jquery.com/jquery-3.6.0.min.js", function () {
    console.log("jquery loaded....");
  });
}
)();

更新

我通过对顶部进行以下更改来使其正常工作。只是不确定为什么会出错。

工作代码:

(function() {
  console.log("Starting....");

  function createScript(url, callback) {
      var script = document.createElement('script');
      script.type = 'text/javascript';
      script.src = url;
      script.async = false;
      script.onload = callback;
      document.head.appendChild(script);
  }
  
  createScript("https://code.jquery.com/jquery-3.6.0.min.js", function () {
    console.log("jquery loaded....");
    console.log("jquery version = "+ $().jquery);
  }
              );
}
)();

如果有人知道为什么我在顶部代码中出现错误,我将不胜感激,以加深我对 JavaScript 的理解。

【问题讨论】:

    标签: javascript callback bookmarklet


    【解决方案1】:

    由于您的书签被压缩到一行中,因此在函数表达式 (var createScript = function (url,callback) {/*...*/}) 的赋值和带有标识符 (createScript(/*...*/);) 的函数调用之间缺少分号会创建非法语法序列。

    具有相同可重现错误和固定变体的简短示例:

    const func = function (){} console.log(1);
    
    const func = function (){}; console.log(1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多