Comportamento estranho `string.replace` ao usar o cifrão ($) como substituto

Eu encontrei um bug no meu código JavaScript que eu isolei para uma substituição de string que está agindo de uma maneira que eu não esperava. Aqui está um exemplo do código:

var text = "as"; text = text.replace(text,"$\'"); console.log(text); 

Isso imprime uma string vazia no console. Eu estava esperando para imprimir $ ‘para o console. Alguém pode explicar isso?

Para usar $ na string resultante, use $$ as $ tem um significado especial nas Expressões Regulares do JavaScript e no método de replace String: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter

Se eu não sei o que está na minha string de substituição eu uso

 replaceWith = "might have 2 $ signs $$ $$$ $$$$" "abc".replace("b", replaceWith) // unexpected result "abc".replace("b", function(){return replaceWith}) // no surprises