JavaScript错误(未捕获到的SyntaxError:输入意外结束)


210

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

在Chrome JS控制台中,出现以下错误:

“未捕获的SyntaxError:输入意外结束”。

我正在使用的JavaScript代码是:

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

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


2
我知道Chrome的V8,DELETE如果响应是200 success而不是204 ,那么对于服务器上的A ,success - no response我也会收到此错误。抬起头,以防任何人也得到这个。
埃里克·约翰逊

Answers:


400

添加第二个});

正确缩进后,您的代码将读取

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

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


278
课程是,始终缩进您的代码(并正确缩进它)。
SLaks 2010年

4
噢,我希望我的VIM捕获到该语法错误。我不敢相信我有时会因不小心出现语法错误而浪费了多少时间。
HeyWatchThis 2013年

4
课程是,始终使用具有良好插件的良好编辑器,该插件可以检测括号配对,突出显示括号甚至修复问题。
斯瓦沃米尔Lenart

1
@HeyWatchThis您可以尝试Syntastic for Vim。
内森·朗

1
我将neomake用于vim / neovim,配置为每次保存JavaScript文件时运行jshint。如果我有语法错误,我会在vim / neovim的装订线中看到警告/错误符号。当我将光标放在该行上时,vim / neovim命令行将显示一条消息,说明错误是什么。
trusktr 2015年

89

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

JSON.parse(stringifiedJSON);

换句话说,发生了以下情况:

JSON.parse("");

3
不幸的是,这包括$.parseJSONjquery 1.11.2
Nasser Al-Wohaibi,2015年

37

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

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

在此处输入图片说明


14

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

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

5

就我而言,它最终成为我的bookmarklet中的一个简单的双引号问题,请记住仅在bookmarklet上使用单引号。以防万一这对某人有帮助。


3

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


2
我在js中有一个//注释,这比我想要的注释多了一点,因为将其粘贴到书签的url中使整个代码变成了单一代码,并且//位于代码的中间。
mflodin 2015年

删除评论也为我修复了它。
亚历克斯(Alex)

3

尝试解析空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);
        }
    }
});

3

对我来说,它是由一个缺失导致(0)javascript:void(0)在一个锚。


0

我得到这个,是因为我在要添加到JS中的文件中添加了注释,这确实是发生问题的尴尬原因-尽管在单击VM预先渲染的文件并捕获错误时,您会发现到底是什么错误是,就我而言,这只是在注释掉我正在使用的某些代码。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.