参数列表后面的JavaScript:SyntaxError:missing)

时间:2013-03-21 21:27:12

标签: javascript javascript-events syntax-error

我收到错误:

SyntaxError: missing ) after argument list

使用此javascript:

var nav = document.getElementsByClassName('nav-coll');
for (var i = 0; i < button.length; i++) {
    nav[i].addEventListener('click',function(){
            console.log('haha');
        }
    }, false);
};

这个错误是什么意思?

5 个答案:

答案 0 :(得分:37)

您的函数中有一个额外的结束}

var nav = document.getElementsByClassName('nav-coll');
for (var i = 0; i < button.length; i++) {
    nav[i].addEventListener('click',function(){
            console.log('haha');
        }        // <== remove this brace
    }, false);
};

你真的应该使用像JSHintJSLint之类的东西来帮助找到这些东西。这些工具与许多编辑器和IDE集成,或者您只需将代码片段粘贴到上述网站中并要求进行分析。

答案 1 :(得分:11)

如下所示,您有多个}

var nav = document.getElementsByClassName('nav-coll');
for (var i = 0; i < button.length; i++) {
    nav[i].addEventListener('click',function(){
            console.log('haha');
        } // <-- REMOVE THIS :)
    }, false);
};

这些事情的一个非常好的工具是jsFiddle。我创建了一个无效代码的小提琴,当单击TidyUp按钮时,它会格式化您的代码,如果有任何可能的错误而丢失大括号,则会更清楚。


DEMO - 你的代码在一个小提琴中,有一个游戏:)


答案 2 :(得分:1)

只是发布以防其他人有同样的错误...

我在“async”函数之外使用了“await”,无论出于何种原因导致“缺少 ) 后参数列表”错误。

解决方案是使函数异步

function functionName(args) {}

变成

async function functionName(args) {}

答案 3 :(得分:0)

我遇到了同样的错误,我发现随着 ES6 和字符串插值的使用越来越多,越来越多的人会开始犯我在使用 Template Literals 时犯过的错误:

最初,我记录了如下语句:

console.log(`Metadata: ${data}`);

但是后来改了,忘了去掉${}

console.log('Metadata: ' + JSON.stringify(${data}));

答案 4 :(得分:0)

与 Josh McGee 类似,我试图在全局范围内使用 await,因为它不是 async 函数,所以会抛出错误。有关解决方案,请参阅 here