Il metodo eval(), che appartiene all'oggetto global, assume una certa importanza in JavaScript. Può risultare molto utile quando è necessario valutare una stringa che si trova in un'espressione.
Esaminiamo la casella di testo sottostante:
Se si desiderasse sommare questo valore ad una variabile di tipo number, come:
x=new Number(55); |
si otterrebbe un presunto errore di calcolo: 4555. Questo perché non è possibile sommare
automaticamente una stringa ad un numero! JavaScript concatena 45 a 55, il valore di x, che nel
contesto dell'espressione viene trasformato in una stringa. Naturalmente, la
variabile x rimane numerica.
Come fare?
Ci sono 2 possibilità:
Qual'è la differenza tra la conversione diretta in un intero e il metodo eval()?
Il metodo eval() non viene utilizzato per operare conversioni: il suo scopo è in realtà quello di valutare la funzione di una
stringa nel contesto di un'espressione, e trasformarla in un dato stringa, in un
numero o in un oggetto secondo la funzione nell'espressione considerata.
Un esempio piuttosto interessante è il seguente. Lavorando con l'elemento di un form f1, come la casella
di testo vista in precedenza, T1, il valore della casella di testo
può essere richiamato nel seguente modo:
document.f1.T1.value;
Se è necessario lavorare con uno script complesso, si potrebbero dover
gestire varie caselle di testo: T1, T2, T3, ....., Tn.
Nel caso in cui venga utilizzato un indice i, che parte da 1, non sarebbe
possibile scrivere:
document.f1.T +1+.value;
codice che non potrebbe mai funzionare, perché altro non sarebbe se non un
errore di sintassi.
Allora, si ricorre al metodo eval() nel seguente modo:
eval("document.f1.T"+1+".value");
che trasforma in oggetto document.f1.T1, ovvero la casella di testo del form f1, e ne valuta il valore dell'attributo value.