Inizializzazione di una variabile come indefinita [chiusa]

7

Facendo qualche refactoring, ho notato uno schema insolito con cui non ho familiarità. Le proprietà e le variabili che non hanno ancora un valore vengono inizializzate con undefined dichiarato esplicitamente, nonostante il fatto che le variabili value-less e le proprietà dell'oggetto valgano comunque a undefined :

var foo = undefined;
this.prop = undefined;

C'è un motivo per farlo?

    
posta stinkycheeseman 20.11.2013 - 20:34
fonte

2 risposte

4

È possibile che l'autore provenisse da un ambiente in cui tutte le variabili erano richieste per essere inizializzate quando dichiarate. Alcuni strumenti di controllo del codice si lamenteranno anche se le variabili non sono inizializzate prima di essere utilizzate (anche se il primo utilizzo è assegnare un valore).

    
risposta data 20.11.2013 - 20:44
fonte
1

Dati i tuoi due esempi, faccio sempre il secondo, ma mai il primo.

function Foo() {
    this.bar = undefined;
    ....
}

Questo crea un elenco esplicito di proprietà disponibili a colpo d'occhio. 1 È equivalente a dichiarare membri pubblici in linguaggi orientati agli oggetti basati sulla classe:

class Foo:
    def __init__(self):
        self.bar = null;

Affidarsi al undefined predefinito in Javascript è simile all'utilizzo di setattr per creare proprietà dinamiche in Python - puoi farlo, ed è la soluzione giusta in alcuni rari casi, ma non aiuterà i manutentori.

1 Non uso null per questo, perché a volte null è un valore valido - controlla se una proprietà è null o undefined mi dice se è stato inizializzato del tutto prima di essere usato da qualche parte.

    
risposta data 21.11.2013 - 02:42
fonte

Leggi altre domande sui tag