Ci sono scenari in cui un'espressione di funzione JS dovrebbe fare riferimento al suo "nome"?

4

Le espressioni di funzioni anonime in JS mi infastidiscono perché rendono più difficili da utilizzare le tracce di stack e il profiler di Chrome Dev Tools, quindi ho deciso di chiamare TUTTE le mie espressioni di funzione da qui in poi. La cosa ovvia sembra essere nominarle lo stesso del nome a cui li sto assegnando, ad es.

this.myFunc = function myFunc () {};

Se capisco correttamente, questo significa che il secondo myFunc è quello che è associato all'interno del corpo della funzione, lasciandolo in grado di accedere facilmente al primo myFunc dall'ambito esterno ma ...

Non riesco a vedere come ciò sia di conseguenza, dato che non riesco a immaginare uno scenario in cui avrei mai dovuto fare riferimento al myFunc esterno. Detto questo, myForesight! == theFuture and Javascript è un linguaggio strano e pericolosamente liberale, quindi ... se questo ti colpisce come anti-pattern, per favore parla ora! Grazie.

    
posta technicalbloke 14.10.2016 - 15:48
fonte

1 risposta

3

Lo sto utilizzando in un quadro di delega degli eventi che ho scritto. Il "nome" della funzione determina quale evento DOM risponde a:

Foo.prototype.addComment = function submit(event, element, params) { ... };

La funzione stessa non ha bisogno di conoscere il proprio nome, ma il Front Controller nella mia libreria usa questo nome come metadati per decidere se eseguire o meno la funzione.

Per quanto riguarda se questa è una buona idea, resta da vedere. Non è una strategia usata spesso, ma ci sono casi limite in cui può funzionare.

    
risposta data 16.10.2016 - 17:56
fonte

Leggi altre domande sui tag