Guida allo stile di JS angolare quando si dichiarano le variabili

2

Sono nuovo di Angular JS e sto lavorando a un progetto con il codice JS Angular "legacy". Il codice ha circa un anno o mezzo anno. Vedo spesso cose del genere:

var _link;
_link = "http://localhost";

o

var setup,
    _link;
_link = "http://localhost";  
// ...
setup = {
    link: _link
};
return setup;

Questo mi sembra molto prolisso, ma il ragazzo che lo ha fatto lo ha fatto in modo coerente attraverso l'applicazione completa. Esiste una guida allo stile o una convenzione JavaScript per fare ciò?

Sono uno sviluppatore Java e una delle prime regole che ho imparato è stata quella di dichiarare sempre una variabile laddove è necessaria. Non ho idea del motivo per cui dovrebbe essere diverso qui ...

    
posta Thomas Uhrig 16.12.2015 - 09:36
fonte

3 risposte

3

Anche gli esempi che hai dato sembrano inutilmente prolissi.

Tuttavia c'è una differenza importante tra javascript e Java.

In javascript, le dichiarazioni vengono issate all'inizio di una funzione indipendentemente da dove si trovano nella funzione che le hai posizionate. L'ambito dei simboli è diverso da Java.

function atest() {
    console.log(a);
    var a = 1;
}

Produce 'indefinito' nella console javascript, in un browser. a è dichiarato ma non inizializzato.

Ma

function atest2() {
    console.log(a);
}

Produce un "Errore riferimento non rilevato" a meno che non esista una proprietà a sull'oggetto predefinito, ad es. window.a in un browser.

Forse il tuo predecessore voleva ricordare a se stesso che le dichiarazioni sono valide dall'inizio della funzione o dell'unità / file di script.

L'idea di "dichiararlo dove è necessario" non funziona come in Java. Le parentesi graffe non controllano, da sole, il raggio d'azione. Ad esempio, una variabile dichiarata all'interno di un ciclo for è visibile al di fuori del ciclo for.

Tuttavia è ancora molto comune vedere le dichiarazioni in cui una variabile viene utilizzata per la prima volta, in javascript.

Hai chiesto delle convenzioni. C'è una convenzione di codifica promossa da Crockford per mettere tutte le dichiarazioni all'inizio della funzione o del file.

"JavaScript does not have block scope, so defining variables in blocks can confuse programmers who are experienced with other C family languages. Define all variables at the top of the function."

Da Convenzioni sul codice di Crockford

Crockford ha cambiato alcune delle sue opinioni dopo che ha veramente fatto i conti con Javascript (vedi le sue opinioni sull'ereditarietà in continua evoluzione, per esempio). Non so se ha cambiato le sue opinioni sulle dichiarazioni.

Posso dire leggendo un sacco di codice della libreria popolare che non è del tutto comune seguire il consiglio di Crockford riguardo alla dichiarazione all'inizio di una funzione. Vedo un sacco di dichiarazioni al primo utilizzo, e penso che sia mainstream per Javascript oggi.

    
risposta data 16.12.2015 - 11:08
fonte
5

È quasi certo che il tuo collega è stato morso da un bug di sollevamento e ha deciso di sovra-compensare.

Mia madre tagliava sempre le estremità del suo bricco prima di condirlo e metterlo nel forno. Quando le ho chiesto perché, ha detto che è così che sua madre l'ha fatto. Così ho chiesto a mia nonna cosa taglia l'arrosto al piatto. Non ne era sicura, ma disse che era importante fare prima di strofinarla con le spezie. È quello che ha fatto sua madre, ha detto. La prossima volta che ho visto la mia bisnonna, le ho chiesto. Ha spiegato: "Sì. Avevo una piccola pentola quando io e PawPaw siamo stati sposati per la prima volta, ho dovuto tagliare le estremità degli arrosti in modo che si adattassero".

Questo codice è il tuo arrosto. La cosa buona che hai ritenuto opportuno fare domande e smettere di tagliare le estremità senza una buona ragione.

A mio parere, nessuna dichiarazione di variabili è preferibile:

// Forget all the setup and _link nonsense.
return {
    link: "http://localhost"
};

Assicurati di confrontare le guide di stile. Quindi scegli e scegli ciò che funziona meglio per la tua squadra:

Mentre ci sei, prendi in considerazione le guide di stile Angular di John Papa e Todd Motto.

Ricorda, niente batte il buon senso quando si tratta di stili di codifica.

    
risposta data 16.12.2015 - 15:16
fonte
0

Nel mondo di angularJS, non è obbligatorio dichiarare una variabile.

Angular consente allo sviluppatore di codificare senza la sua dichiarazione e non genera mai errori per lo stesso. questo significa che è più intelligente, quindi non è necessario andare ogni volta in cima allo schermo per dichiarare variabili come altri linguaggi di programmazione.

Esempio:

  function hello(){           
       //string            
       message = 'Hello World!!';
       return message;

       //object
       message = { };

       //array
       message = []; 
}
    
risposta data 12.02.2016 - 13:15
fonte

Leggi altre domande sui tag