Gelagat Tidak Dijangka dalam Penggantian Rentetan Menggunakan Simbol $
Isu yang membingungkan timbul apabila menggunakan kaedah string.replace() untuk penggantian rentetan, terutamanya apabila rentetan gantian mengandungi simbol $. Pertimbangkan kod berikut:
<code class="javascript">var text = "as"; text = text.replace(text,"$\'"); console.log(text);</code>
Kod ini menyebabkan rentetan kosong dicetak ke konsol, yang mungkin kelihatan berlawanan dengan intuisi. Untuk memahami tingkah laku ini, adalah penting untuk memahami kepentingan istimewa $ dalam Ungkapan Biasa JavaScript dan kaedah string.replace().
Menurut dokumentasi Rangkaian Pembangun Mozilla, $ mempunyai makna istimewa dalam ungkapan biasa . Dalam ungkapan biasa, $ biasanya digunakan untuk menandakan penghujung rentetan yang dipadankan. Walau bagaimanapun, apabila digunakan dalam rentetan gantian untuk kaedah string.replace(), $ mewakili keseluruhan corak yang dipadankan atau kumpulan tangkapan.
Dalam kes ini, kerana teks itu sendiri akan digantikan dengan $' di mana $ memutuskan untuk corak yang dipadankan (iaitu sebagai), rentetan yang terhasil menjadi $as dan seterusnya menggantikan sebagai dengan $ menyelesaikan kepada rentetan kosong.
Untuk menyelesaikan isu ini, adalah disyorkan untuk melepaskan aksara $ jika anda berhasrat untuk menggunakan ia sebagai watak literal dalam rentetan gantian. Satu penyelesaian ialah menggunakan $$ sebagai rentetan gantian.
<code class="javascript">var text = "as"; text = text.replace(text,"$$\'"); console.log(text); // Outputs: $'</code>
Atas ialah kandungan terperinci Mengapakah `text.replace(text, \'$\\\'\')` Menghasilkan Rentetan Kosong dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!