2015-01-02 6 views
32

Ho scritto una fabbrica angularjs come di seguito

module.factory('LogService', function() { 

    function log(msg) { 
     console.log("Rahkaran:" + new Date() + "::" + msg); 
    } 

    return 
    { 
     log: log 
    }; 

}); 

Ma ho continuato a ottenere questo errore

Provider 'LogService' must return a value from $get factory method

Ho cercato su Google l'errore e non sono riuscito a trovare alcuna soluzione.

Casualmente ho cambiato la dichiarazione return a questo

return{ 
    log: log 
}; 

ed errori è andato !!

C'è qualche differenza tra avere { di fronte a return o alla riga successiva?

+0

http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi –

risposta

42

Questo si chiama inserimento automatico e virgola dichiarazione

Il ritorno è influenzata da inserimento virgola automatica (ASI). Non esiste un terminatore di linea ; tra la parola chiave return e l'espressione consentita.

return 
a + b; 

// is transformed by ASI into 

return; 
a + b; 

Quindi è necessario inserire { davanti ritorno e Non a riga successiva.

Riferimento: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

1

Nel tuo caso ci sarà sempre un valore non definito restituito. Ma in altri casi il problema potrebbe essere anche il fatto che si restituisca un valore nullo o indefinito dalla fabbrica.

Problemi correlati