Chiarire un ambito JavaScript per quanto riguarda la pagina 199 del "JavaScript" di Nicholas "

StackOverflow https://stackoverflow.com/questions/20353171

  •  25-08-2022
  •  | 
  •  

Domanda

Nell'Appendice A, pagina 199, quando si discute di usare "Usa rigoroso", va così:

Se si desidera che la modalità rigorosa si applichi alle funzioni di Mulitple senza la necessità di scrivere "Utilizzare più rigorosi", utilizzare l'invocazione delle funzioni immediate:

//good
(function() {
    "use strict";

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

}());

La mia domanda è: se questo è come appare l'intera funzione anonlymous, allora probabilmente non c'è effetto (per il resto) di invocarlo immediatamente? Perché solo due funzioni sono dichiarate all'interno della funzione anonima, ma non è né chiamato dall'interno (quindi le due funzioni non possono fare alcun effetto collaterale per il resto del mondo), né restituiti all'esterno, quindi i loro riferimenti sono persi.

Probabilmente, voglio solo confermare, che lo snippet di codice ha lo scopo di mostrare solo l'uso di "usare severi", quindi ha semplicemente omesso le chiamate o il ritorno di queste due funzioni?

Grazie,

/Bruin

È stato utile?

Soluzione 2

Penso che tu abbia ragione. Questo esempio non è completo perché non chiamerà mai le funzioni definite in esso. L'esempio è solo pensato per illustrare come applicare "utilizzare severi" attraverso una serie specifica di funzioni. Se volevi estenderlo un po 'in modo che le funzioni vengano esportate, potresti fare qualcosa del genere:

var myModule = (function() {
    "use strict";

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

    return {
        doSomething: doSomething,
        doSomethingElse: doSomethingElse
    };

}());

myModule.doSomething();
myModule.doSomethingElse();

Altri suggerimenti

L'idea è che l'IIfe racchiude tutto del tuo codice, non solo quelle funzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top