ChatGPT解决这个技术问题 Extra ChatGPT

JavaScript 错误(Uncaught SyntaxError: Unexpected end of input)

我有一些适用于 FireFox 但不适用于 Chrome 或 IE 的 JavaScript 代码。

在 Chrome JS 控制台中,我收到以下错误:

“未捕获的语法错误:输入意外结束”。

我使用的 JavaScript 代码是:

<script>
 $(function() {
 $("#mewlyDiagnosed").hover(function() {
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
 }, function() {
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
 });
</script>

它说错误在最后一行是 });

我知道 Chrome 的 V8,对于服务器上的 DELETE,如果响应是 200 success 而不是 204 success - no response,我也会收到此错误。只是抬头,以防有人也得到这个。

S
SLaks

添加第二个 });

正确缩进后,您的代码将显示为

$(function() {
    $("#mewlyDiagnosed").hover(function() {
        $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
    }, function() {
        $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
    });
MISSING!

您从未关闭外部 $(function() {


教训是,始终缩进您的代码(并正确缩进)。
教训是,总是使用好的编辑器和好的插件,它可以检测括号配对、突出显示它甚至修复问题。
@HeyWatchThis 你可以试试 Syntastic for Vim。
我将 neomake 用于 vim/neovim,配置为每次保存 JavaScript 文件时运行 jshint。如果我有语法错误,我会在 vim/neovim 的装订线中看到警告/错误符号。当我将光标放在该行上时,vim/neovim 命令行将显示一条消息,说明错误是什么。
缺少那个简单的 });刚刚为我节省了 1 小时的调试时间。非常感谢@SLaks
f
falsarella

就我而言,我试图解析一个空的 JSON:

JSON.parse(stringifiedJSON);

换句话说,发生的事情如下:

JSON.parse("");

不幸的是,这包括 jquery 1.11.2 的 $.parseJSON
f
falsarella

http://jsbeautifier.org/ 有助于缩进缩小的 JS 代码。

此外,通过 Google Chrome,您可以使用“漂亮打印”。请参阅下面的示例屏幕截图,显示 Stack Overflow 中的 jquery.min.js 很好地从我的浏览器中缩进 :)

https://i.stack.imgur.com/2906e.png


S
Sebastian Kaczmarek

稍微格式化您的代码,您只关闭了内部悬停功能。您尚未关闭外部部件,如下所示:

$(// missing closing)
 function() { // missing closing }
     $("#mewlyDiagnosed").hover(
        function() {
            $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
        }, 
        function() {
            $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
        });

S
Sebastian Kaczmarek

就我而言,这是由于锚点中 javascript:void(0) 中缺少 (0) 引起的。


同样的问题:但是,我有 javascript:void(0 缺少一个 )
Y
Yëco

在我的情况下,它最终成为我的书签中的一个简单的双引号问题,记住只在书签上使用单引号。以防万一这有助于某人。


太感谢了!我从来不知道这会是个问题
很高兴它有帮助。
S
Sebastian Kaczmarek

此错误主要是由于尝试解析空 JSON 时返回的空 ajax 调用引起的。

如果返回的数据为空,解决这个测试

$.ajax({
    url: url,
    type: "get",
    dataType: "json",
    success: function (response) {

        if(response.data.length == 0){
            // EMPTY
        }else{
            var obj =jQuery.parseJSON(response.data);
            console.log(obj);
        }
    }
});

f
falsarella

我在尝试编写 javascript 小书签时遇到此错误。我无法弄清楚是什么原因造成的。但最终我尝试通过以下网站对小书签进行 URL 编码:http://mrcoles.com/bookmarklet/ 然后错误消失了,因此 javascript 代码中的某些字符被解释为特殊的 URL 控制字符一定是个问题。


我在我的 js 中有一个 // 注释,它注释掉的比我想要的多一点,因为将它粘贴到书签的 url 使整个代码成为单行代码,而 // 位于代码的中间。
删除评论也为我修复了它。
J
Jack Hales

我得到了这个,因为我在我添加到我的 JS 的文件中有一个评论,这是发生了什么非常尴尬的原因 - 虽然当点击预渲染并捕获错误的 VM 文件时,你会发现究竟是什么错误,在我的情况下,它只是取消注释我正在使用的一些代码。


我遇到了同样的问题,有时 ftp 传输会弄乱文件的行,单行注释可能会在他们的行中包含后面的行
j
justanotherguy

我也得到这个错误指向页面上最后一个脚本块的结尾,只是意识到这个错误实际上是由于点击了一个带有 onclick="pagename" 而不是 onclick="window.location='pagename'" 的元素。它并不总是缺少括号!


P
Petr

我认为这几乎可能是您的应用程序中的任何 javascript 错误/键入错误。我试图一个接一个地删除文件内容,最后发现打字错误。


我在第二次和随后的电话中收到此错误。第一次调用工作正常,但此后我收到错误,它指向 html 的第一行。无济于事。我编写了一个程序来检查所有 brces、括号和引号,并且所有内容都是平衡的。代码可能相当复杂——而且有很多。请问还有什么想法吗?