我收到错误:
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);
};
这个错误是什么意思?
答案 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);
};
你真的应该使用像JSHint或JSLint之类的东西来帮助找到这些东西。这些工具与许多编辑器和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。