Cara melakukan carian dan gantian rentetan "mentah" dalam JavaScript, tanpa REGEX


Bagaimana saya melakukan carian dan gantian rentetan yang betul dalam JavaScript tanpa menggunakan REGEX sama sekali?

Saya tahu dokumen menyatakan bahawa jika hujah pertama kepada String.prototype.replace() adalah sebuah string, dan bukannya regex, ia akan melakukan penggantian literal. Amalan menunjukkan bahawa itu TIDAK sepenuhnya benar:

"I am a string".replace('am', 'are')
--> "I are a string"

OK

"I am a string".replace('am', 'ar$e')
--> "I ar$e a string"

Masih OK

"I am a string".replace('am', 'ar$$e')
--> "I ar$e a string"

TIDAK OK!

Di mana tanda dolar kedua? Adakah ia mencari sesuatu seperti $1 untuk digantikan dengan padanan dari REGEX... yang tidak pernah digunakan?

Saya sangat keliru dan kecewa, ada idea?

Jawapan #1

Jika anda menggunakan panggilan balik gantian daripada literal string, penggantian regex automatik tidak akan dilakukan:

"I am a string".replace('am', () => 'ar$$e')