2016-07-27 11 views
1

Ich habe gerade angefangen, ein wenig mit Javascript zu arbeiten, aber schnell stecken geblieben mit einer - in meinen Augen - ziemlich einfache Aufgabe der Rückgabe eines Objekts Literal.JavaScript-Funktion gibt undefined anstelle von Objekt-Literal zurück

Der Code, den ich haben derzeit wie folgt aussieht

function wrapInObject(x) 
{ 
    return 
    { 
     y: x 
    }; 
} 
console.log(wrapInObject('someValue')); 

sondern die Objektliteral an die Konsole des Schreibens druckt undefined - Ich habe versucht, die Funktion mit Zahlen oder anderen Objektliterale Aufruf aber nichts half.

Danke für jede Hilfe!

+0

automatische Semikoloneinfügung. –

+0

Ja, weißer Raum bringt dich um. Entfernen Sie die Rückkehr nach der Rückkehr – epascarello

+1

Wow - thx viel Jungs! Kein kommerzieller teurer Support etc. könnte schneller sein: D – tengobash

Antwort

2

Dies ist aufgrund eines Prozesses bekannt als automatic semicolon insertion und ist ziemlich oft die Quelle der Verwirrung für neue Entwickler mit einem C# -Hintergrund oder anderen Sprachen, wo die Eröffnung Klammer in einer neuen Zeile ist die gängige Praxis.

Im Wesentlichen wird ein implizites Semikolon direkt nach Ihrer return-Anweisung platziert, sodass es undefined zurückgibt und Ihr Objektliteral nie 'erreicht' wird.

Um es zu beheben nur die öffnende Klammer an das Ende des Einführungs zu

function wrapInObject(x) 
{ 
    return ; // semicolon is added 
    { 
     y: x 
    }; 
} 
console.log(wrapInObject('someValue')); 

function wrapInObject(x) 
{ 
    return 
    { 
     y: x 
    }; 
} 
console.log(wrapInObject('someValue')); 

wird daher umgewandelt Durch automatische Semikolon

function wrapInObject(x) 
{ 
    return { 
     y: x 
    }; 
} 
+1

Guter Fang. Ich kopierte den Code und es funktionierte, weil mein Texteditor den Wagenrücklauf reparierte. –

0

wie so return bewegen du wirst undefiniert.

0

Dies liegt an der automatischen Einfügung von Semikolon, die einen Zeilenumbruch hinzufügt, nachdem die return-Anweisung die js-Engine veranlasst, diese Zeile zu analysieren, als ob es ein Semikolon gäbe. Verschieben Sie die öffnende Klammer in die gleiche Zeile wie die return-Anweisung.

Another StackOverflow entry about semicolon auto-insertion

Verwandte Themen