2012-02-17 9 views
5

Ho avuto un'idea di memorizzare codice come liste (array) in Nodo ed eseguirli, ma questo è più difficile di quanto pensassi: se faccio una lista con una funzione nel inizio o alla fine, .pop o .shift rimuove ma omette e restituisce l'elemento successivo:Array.pop in Node salta e dimentica una funzione item

> l = [1, 75, 84, function() { console.log('aseuht') }] 
[ 1, 75, 84, [Function] ] 
> l.pop() 
84 
> l 
[ 1, 75 ] 

ho notato questo nodo v0.4.9, ma è ancora presente in 0.6.10.

Esiste una soluzione alternativa?

aggiornamento: Ho archiviato un issue on GitHub.

aggiornamento 2: il bug è presente solo nella mia shell, quando eseguo questi comandi da uno script standalone, funziona correttamente. Quindi questo è solo un problema di shell.

risposta

4

Ho appena provato in Node, Firefox e Chrome e ha funzionato come previsto in tutti e tre.

Ecco il codice che ho usato:

var l= [1, 75, 84, function() { console.log('aseuht'); }]; 
console.log(l); 
console.log(l.pop()); 
console.log(l); 

e risultato:

[ 1, 75, 84, [Function] ] 
[Function] 
[ 1, 75, 84 ] 

e la JSFiddle: http://jsfiddle.net/Q5M8M/

Quale versione del Nodo stai usando?

+0

I have Node v0.4.9 –

+0

Stesso risultato in 0.6.10 –

+0

Quindi hai tagliato e incollato il frammento di codice che ho scritto e non funzionava come il mio? Non capisco perché stiamo vedendo cose diverse. –

Problemi correlati