Eventuali duplicati:
How to get function parameter names/values dynamically from javascriptespressioni regolari per ottenere la lista dei parametri da definizione di funzione
Attualmente sto lavorando su un progetto in javascript (node.js) che ha me cercando di ottenere un array di parametri nomi (valori NON, non ho bisogno di argomenti) da una funzione. Attualmente sto usando Function.toString() per ottenere la stringa di funzione e quindi eseguire una regex su quella per ottenere la mia lista di parametri.
Prendiamo il seguente semplice esempio:
var myFunction = function (paramOne, paramTwo) { ... }
esecuzione il mio regex contro questo, e poi fare qualche magia stringa (split, ecc) mi aspetterei un allineamento indietro come questo:
paramList = ['paramOne', 'paramTwo']
Ho qualcosa che funziona ma mi sento come se probabilmente non fosse la soluzione migliore dato alcuni dei caratteri funky che javascript consente di usare per nomi variabili e che javascript ti consente di definire le funzioni su più righe.
Ecco quello che ho attualmente:
function.*[\w\s$]*(\((.*[\w\s,$]*)\))
Questo mi dà il mio "match" nel gruppo 1 e poi la mia lista param senza parentesi nel gruppo 2, che è fresco. È davvero il modo migliore per fare ciò che voglio? C'è una migliore espressione regolare che potrei usare per questo? Non cerco davvero qualcosa di "più semplice", ma davvero qualcosa che possa cogliere tutte le possibili situazioni.
Qualsiasi aiuto sarebbe apprezzato, e molte grazie in anticipo!
Come pensi che dovrei andare a riguardo? Questo è quello che sto cercando di fare con il mio regex, ma forse c'è un approccio diverso? Stai pensando che potrei solo indexOf "(" e ")" e poi dividere cosa c'è in mezzo? Sarebbe meglio di una regex pazza? –
@JasonL .: Ho aggiunto del codice alla risposta (e un esempio dal vivo). –
Grazie! La tua soluzione è molto più semplice di quanto pensassi mi aspettassi. Al momento sto provando con tutte le diverse varianti consentite da javascript. Ciò consentirà di catturare tutti i pazzi personaggi speciali consentiti da javascript (uno dei più famosi è l'aspetto di disapprovazione)? Si noti anche che questo è per l'ambiente node.js SOLO, quindi ho davvero solo bisogno di preoccuparsi V8 :) –