Originariamente inviato da Mich_
Forse stai usando qualcosa non presente nelle prime implementazioni di JS.
già 
Originariamente inviato da Mich_
Il fatto di poter inserire una funzione nel secondo termine del replace, potrebbe non essere presente in versioni JS (o meglio Jscript) precedenti alla 1.2.
infatti torna un banale toString del costruttore ... però qualcosa non torna ...
codice:
alert("a b".replace(/([a-z])/g, (function(a){return '['+a+']';})('$1')));
// [a][ b]
alert("a b".replace(/([a-z])/g, (function(a){var o = {a:"1",b:"2"}; return o[a];})('$1')));
// undefined undefined
come puoi vedere la funzione è accettata, ma solo in un certo modo, lo scope della variabile inizia ad esistere dopo l'assegnazione ... na cosa dell'altro mondo, imho 
(accade anche in firefox questo ... quindi passare alla funzione a mano non è una soluzione)
Originariamente inviato da kentaromiura
magari usare sempre c gli fa confusione
ma vai a bere va