2016-07-21 12 views
1
function foo1() { 
    return { 
     bar: "hello" 
    }; 
} 

function foo2() { 
    return 
    { 
     bar: "hello" 
    }; 
} 

console.log(foo1()); 
console.log(foo2()); 

Kann ich eine Erklärung erhalten, warum die beiden Funktionen unterschiedliche Ergebnisse ausgeben, obwohl der Code gleich aussieht?Warum ergeben diese syntaktisch identischen Funktionen unterschiedliche Ergebnisse?

+0

Und auch ein [hilfreicher Link] (http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi) für Sie. –

Antwort

9

Automatische Semikolon Einfügungs

the specification Zitiert,

Wenn ein continue, break, return, throw oder yield Token gestoßen wird, und ein LineTerminator wird, bevor das nächste Token anzutreffen, ein Semikolon wird automatisch nach dem continue, break, return,eingefügtoder yield Token.

So wird der Code wie wird diese

function foo2() { 
    return;   // Note the `;` after `return` 
    { 
     bar: "hello" 
    }; 
} 

Die return Anweisung beendet und dann gibt es ein Objekt nach dem, was im Grunde nicht erreichbar Code. Da die return-Anweisung nichts explizit zurückgibt, wird undefined zurückgegeben.

Verwandte Themen