JavaScript Eval Alternative

March 8

Douglas Crockford, nel suo libro "JavaScript: le parti buone", notoriamente ha scritto: "eval è male." Gli esperti concordano: la funzione eval di JavaScript presenta problemi di sicurezza, rallenta notevolmente l'esecuzione di script e rende il codice molto più difficile da leggere e mantenere. Per fortuna, un programmatore informato può quasi sempre evitare di utilizzare il metodo eval approfittando delle molte alternative disponibili. Anche se ampiamente disprezzato, il "eval ()" funzione non svolgono un ruolo essenziale nella programmazione JavaScript: provoca un browser web per eseguire immediatamente il codice passato a come argomento.

l'esecuzione di codice

I programmatori che iniziano ritengono spesso erroneamente devono chiamare l'operatore eval su altre funzioni per garantire che un browser web esegue il codice. Questo è un errore: Web browser eseguono automaticamente qualsiasi funzione JavaScript accessibile. Un esempio di questo codice sbagliato potrebbe essere simile:

'Eval ( "funzione di m () {alert' funzione eseguita '}");'

Tuttavia, sarebbe eseguire in modo più efficiente se fosse stato scritto:

'Funzione m () {alert' funzione eseguita '} ");'

Dinamico accesso alle proprietà

programmatori JavaScript formati in altre lingue possono utilizzare il "eval) (" la funzione di accedere a una proprietà aggiunta dinamicamente. Ma JavaScript offre ai programmatori un gran lunga superiore alternativo chiamato "proprietà dinamiche." Proprietà dinamiche consentono a un programma di accedere a qualsiasi codice finché è noto al momento della scrittura. I programmatori accedere a queste proprietà utilizzando le parentesi quadre invece di notazione del punto, in questo modo:

'Oggetto [sampleProperty]'

funzioni

Un programmatore a volte può accedere a una funzione utilizzando il metodo eval, soprattutto dopo aver usato una stringa creata in modo dinamico per creare una funzione durante l'esecuzione di codice. Un programmatore potrebbe utilizzare questa tecnica in questo modo:

alert 'var dynamicFunction =' ( "Questa funzione ha creato al volo!") ';'

'Eval (dynamicFunction);'

Ma un programmatore esperto potrebbe evitare di chiamare "eval ()" con una sola riga di codice in più mettendo la funzione creata in modo dinamico in una variabile e chiamare una funzione dalla variabile:

alert 'var dynamicFunction =' ( "Questa funzione ha creato al volo!") ';'

var functionVariable = new Function (dynamicFunction);

functionVariable (); '

Codice biblioteche

I programmatori possono evitare di usare "eval ()" basandosi sulle alternative fornite da librerie JavaScript. Le biblioteche, come MooTools, jQuery e Dojo fornire ai programmatori con funzioni e modelli di codice che evitano la funzione "eval ()", ove possibile. Un programmatore che si basa su queste librerie si fatica approfittare delle alternative alla "eval) (" la funzione. Questa alternativa a "eval ()" fornisce inoltre ai programmatori con una serie di altri strumenti per la programmazione JavaScript.