JavaScript: SyntaxError: missing ) na argumentenlijst

Ik krijg de foutmelding:

SyntaxError: missing ) na argumentenlijst

Met dit javascript:

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

Wat betekent deze fout?


Antwoord 1, autoriteit 100%

Je hebt een extra afsluiting }in je functie.

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);
};

Je zou eigenlijk iets als JSHintof JSLintom deze dingen te helpen vinden. Deze tools kunnen worden geïntegreerd met veel editors en IDE’s, of u kunt gewoon een codefragment in de bovenstaande websites plakken en om een analyse vragen.


Antwoord 2, autoriteit 31%

Je hebt een extra }gekregen voor velen, zoals hieronder te zien is:

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);
};

Een zeer goede tool hiervoor is jsFiddle. Ik heb een fiddle gemaakt met uw ongeldige code en wanneer u op de knop TidyUpklikt, wordt uw code opgemaakt, waardoor het duidelijker wordt als er mogelijke fouten zijn met ontbrekende accolades.


DEMO– Uw code in een viool, speel maar 🙂



Antwoord 3, autoriteit 4%

gewoon posten voor het geval iemand anders dezelfde fout heeft…

Ik gebruikte ‘wait’ buiten een ‘async’-functie en om welke reden dan ook resulteert dit in een ‘missing ) after argument list’-fout.

De oplossing was om de functie asynchroon te maken

function functionName(args) {}

wordt

async function functionName(args) {}

Antwoord 4

Ik kreeg dezelfde fout en ik dacht dat met het toegenomen gebruik van ES6 en string-interpolatie, steeds meer mensen dezelfde fout zouden gaan maken die ik deed met Template Literals:

Aanvankelijk heb ik een verklaring als volgt vastgelegd:

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

Maar veranderde het toen en vergat de ${}te verwijderen:

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

Antwoord 5

Net als bij Josh McGee, probeerde ik awaitte gebruiken in de globale scope, wat, aangezien het geen async-functie is, een foutmelding geeft. Zie hiervoor oplossingen.

Other episodes