Mengapakah `text.replace(text, \'$\\\'\')` Menghasilkan Rentetan Kosong dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-10-30 15:07:02
asal
929 orang telah melayarinya

 Why Does `text.replace(text,

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!