Quando e Dove dovremmo usare il sollevamento in Javascript [chiuso]

10

Sono nuovo di Javascript. Sto imparando il concetto di sollevamento in Javascript.
Sulla base delle esercitazioni Javacsript nel Mozilla sito web, mi sono imbattuto in questa parola hoisting . Secondo queste esercitazioni, variabili in JavaScript è che puoi fare riferimento a una variabile dichiarata in seguito, senza ottenere un'eccezione . Ma, la mia domanda è su quali circostanze è opportuno utilizzare il sollevamento in un Javascript lato client o perché dovremmo usare il sollevamento in Javascript. Quali sono i suoi vantaggi.

    
posta Rudra 24.03.2014 - 18:21
fonte

3 risposte

11

Non ho mai sentito usare il termine "sollevamento". Se ti riferisci a questo uso del sollevamento da Ben Cherry: link , quindi da quello che posso riunisce, sta semplicemente facendo eco a Douglas Crockford da Javascript: The Good Parts , e dicendo che dovresti mai usare il sollevamento . La sua affermazione alla fine è che tutte le variabili dovrebbero essere dichiarate nella parte superiore della tua funzione (come suggeriscono Crockford e JSLint).

Oppure, nelle parole di Mr. ChristopherBrown, non è una funzione di usare , per dire, ma semplicemente una stranezza relativa a come il browser interpreta Javascript.

Quindi, in breve: mai e da nessuna parte .

    
risposta data 24.03.2014 - 18:43
fonte
16

Il sollevamento descrive una funzionalità di come Javascript viene interpretato dal browser e non è tanto una funzione da utilizzare.

Quando si interpretano Javascript, le variabili del livello di funzione dello scope browser all'inizio della funzione. Esempio:

function AddTwoAndTwo() {
    var two = 2;
    var result = two + two;
    return result;
}

Nel codice postato, entrambe le variabili "due" e "risultato" esistono all'inizio dello scope della funzione (ovviamente, poiché vengono dichiarate lì). Tuttavia, poiché i browser "issano" le variabili, diventa il seguente codice Javascript legale.

function AddTwoAndTwo() {
    result = 5;
    alert(result);
    var two = 2;
    var result = two + two;
    return result;
}

L'effetto netto qui è che hai le variabili in uso prima di dichiararle e ciò può causare confusione, specialmente con le variabili di ambito globale. Esempio:

var result = 6;

function AddTwoAndTwo() {
    alert(result);  // should this be 6 or undefined?
    var two = 2;
    var result = two + two;
    return result;
}

Per evitare confusione, dichiara le tue variabili nella parte superiore di una funzione.

    
risposta data 24.03.2014 - 19:48
fonte
1

Perché?

JavaScript non ha Block Scope , questo dovrebbe spiegare perché le cose dovrebbero hoist in cima.

È utile?

Se preferisci questo:

var someVariable = someVariable || {};

Al posto di questo:

if ( "undefined" !== typeof someVariable ) {
    someVariable = someVariable;
} else {
    someVariable = {};
}

Allora è utile. Anche se non te ne accorgi!

Clearification

Il primo esempio si tradurrà in qualcosa di simile a questo:

var someVariable = someVariableValue;

if ( "undefined" !== typeof someVariable ) {
    var someVariableValue = someVariable;
} else {
    var someVariableValue = {};
}
    
risposta data 25.03.2014 - 12:00
fonte

Leggi altre domande sui tag