#JavaScriptのString.replace()の第2引数の文字列をエスケープする

下記のようにString.replaceの第2引数に特殊文字列を含む文字列を渡すとターゲットを素の第2引数の文字列に置き換えません。

'foo123bar'.replace('123', '$`')
// 'foofoobar'

下記のように第2引数に文字列を返す関数を渡すことで文字列をエスケープすることができます。

'foo123bar'.replace('123', () => '$`')
// 'foo$`bar'