【问题标题】:How do I fix this missing semicolon syntax error in Javascript?如何修复 Javascript 中缺少的分号语法错误?
【发布时间】:2012-03-04 00:01:08
【问题描述】:

一位朋友为我写了一些代码,其中有一个文件有一个奇怪的语法错误。经过一番寻找,我将其缩小到这部分代码,它应该会重现错误:

var say = functіon(message) {
  alert(message);
  return message;
};

say(say("Goodbye!"));

当我运行它时,我在 Internet Explorer 控制台中看到一个错误,上面写着 SCRIPT1004: Expected ';'。我没有看到任何地方缺少分号,我无法想象它要我把分号放在哪里。

它在哪里需要一个分号,为什么它在那里需要一个分号?

【问题讨论】:

  • 您在 Firebug 中也遇到错误:jsfiddle.net/AdHZY
  • @tftd:分号只能出现在行尾。这会导致错误。
  • 您可能在某个地方有一个不可打印的字符,这会破坏一些东西。手动重新输入代码,它将正常工作。复制/粘贴代码会产生错误,但手动输入不会。
  • 这是个恶作剧。最确定的。也许我要在某人身上玩这个。
  • 好吧,StackOverflow 的语法高亮显示已经揭示了这一点:单词functionon 部分以不同的颜色显示。

标签: javascript unicode syntax-error


【解决方案1】:

事实上,您插入的是 unicode "i" 而不是普通的 "i"。 我在 VSCode 中遇到了其他错误:
',' expected. (1, 29)
',' expected. (2, 10)
Declaration or statement expected. (4, 3)
您也可以尝试评估 "functіon" == "function"

function compare() {
  return "functіon" === "function"
}
console.log(compare())

但是,当我尝试通过自己绘制“函数”来比较它时:它返回 true;

function compare2() {
  return "function" === "function"
}
console.log(compare2())

另外,我没有在此处包含分号,在 javascript 中它们不是必需的。

【讨论】:

    【解决方案2】:

    使用此页面验证:https://r12a.github.io/uniview/?charlist=funct%D1%96on(message)

    显示每个字符的信息。

    【讨论】:

      【解决方案3】:

      在调试别人的工作时,我遇到了类似的问题和相同的错误代码。为了解决这个问题,我将这段代码粘贴到记事本中,然后将其重新复制回 Visual Studio。错误消失了。我认为最初编写代码的人一定是从某个地方复制了它,其中包含一些奇怪的字符。

      【讨论】:

        【解决方案4】:

        您的问题是函数中的i 是Unicode 字符i。如果您将其更改为“正常”i,它应该可以正常工作。

        但现在我想知道如何破解 :) 你在那里得到一个 unicode 字符 :P

        【讨论】:

        • @Rocket 是的。字符456.
        • 出于好奇,您是如何弄清楚到底出了什么问题?
        • @CCCason 只是因为代码看起来没问题。只需将代码复制/粘贴到显示字符代码的体面的文本编辑器中即可。如果我想变得很酷,也可以使用十六进制编辑器;)
        • @CCCason:突出显示问题中的i,右键单击,然后选择“seach”。
        • 我在查看 jsfiddle 上的剪辑时注意到了这一点。 і 周围的选择框比它周围的其他字符大一点。
        【解决方案5】:

        你拼错了“函数”:)

        var say = function(message){
            alert(message);
            return message;
        };
        
        say(say("Goodbye!"));
        

        您已插入functіon :)

        【讨论】:

        • 从视觉上看,它没有拼写错误。我怀疑@Rocket 暗示其中一个字母是另一个伪装的符号。
        • @Rocket 不是他的情况。他有一个看起来很正常的角色,但事实并非如此。甚至我的 IDE 也被他的代码染红了 :)
        • 好吧......即使这是个玩笑......我们很快就找到了错误:D
        【解决方案6】:

        我已将它复制并粘贴到我的记事本++ 中,你的代码在我的记事本++ 中看起来像这样,重新键入你的函数关键字,i 被替换为?。

        var say = funct?on(message) {
              alert(message);
              return message;
            };
            say(say("Goodbye!"));
        

        【讨论】:

          【解决方案7】:

          我将您的代码复制到 jsfiddle 中,Chrome 也出现错误。我删掉了“function”这个词,重新输入了“function”,效果很好。

          那里一定有一些额外的字符。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-04
          • 2021-08-16
          相关资源
          最近更新 更多