Mengapa Kod JavaScript Saya Gagal dengan `h.className = h.className ? \' ralat\' : \'ralat\'`?

DDD
Lepaskan: 2024-10-31 21:46:02
asal
805 orang telah melayarinya

Why Does My JavaScript Code Fail with `h.className  = h.className ? ' error' : 'error'`?

Enigma Keutamaan Operator: Operator Ternary dan Penggabungan JavaScript

Penggunaan operator ternary dalam JavaScript boleh membingungkan, terutamanya apabila bercampur dengan yang lain pengendali. Pertimbangkan coretan kod berikut:

h.className += h.className ? ' error' : 'error'
Salin selepas log masuk

Tujuan kod ini adalah untuk menambahkan rentetan ' ralat' pada sifat className bagi elemen HTML 'h'. Walau bagaimanapun, kod tersebut gagal dengan ralat. Untuk memahami sebabnya, kita perlu membedah keutamaan operator dalam JavaScript.

Pengendali ternary (?:) mempunyai keutamaan yang lebih tinggi daripada operator tugasan (=). Oleh itu, kod di atas adalah bersamaan dengan:

h.className = h.className + (h.className ? ' error' : 'error')
Salin selepas log masuk
Salin selepas log masuk

Tafsiran ini lebih masuk akal. Operator ternary menyemak sama ada h.className bukan batal atau tidak ditentukan (nilai "benar"). Jika benar, ia menambahkan 'ralat' pada h.className. Jika tidak, ia menambahkan 'ralat'.

Untuk membetulkan kod asal, kami perlu menambah operator tugasan dalam kurungan secara eksplisit:

h.className = h.className + (h.className ? ' error' : 'error')
Salin selepas log masuk
Salin selepas log masuk

Dengan meletakkan operator tugasan dalam kurungan, kami membatalkan peraturan keutamaan dan pastikan keseluruhan ungkapan ternary diberikan kepada h.className.

Atas ialah kandungan terperinci Mengapa Kod JavaScript Saya Gagal dengan `h.className = h.className ? \' ralat\' : \'ralat\'`?. 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
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!