Tajuknya mungkin kedengaran seperti ada jenaka yang menunggu di sini untuk anda (saya tahu seorang pemusnah SEO). Maaf mengecewakan. Siaran ini sebenarnya mengenai pengendali tugasan logik JavaScript yang diperkenalkan pada ES2021. Teruskan membaca untuk mengetahui apa kaitan George dan Robert dengan perkara ini...
Pengendali tugasan logik pada asasnya adalah gabungan logik Boolean dan operasi penugasan. Tetapi terdapat lebih banyak komponen ini daripada yang mungkin difikirkan pada mulanya.
Untuk satu perkara, ramai, jika tidak kebanyakan, pembangun mungkin tidak menyedari betapa mendalamnya logik Boolean dalam fabrik pengkomputeran moden. Ia merangkumi litar komputer kepada pernyataan bersyarat dalam kod anda.
Kami juga menggunakan tanda sama setiap hari, selalunya tanpa memikirkannya. Simbol ini, yang kini penting dalam kedua-dua matematik dan pengekodan, telah dicipta untuk tujuan matematik pada abad ke-16. Kira-kira 400 tahun kemudian, pada tahun 1950-an, ia mendapat laluan ke dalam pengaturcaraan komputer.
Jika konteks sejarah ini kurang menarik bagi anda, sila langkau ke bahagian Memahami Operator Tugasan Logik. Jika tidak, sertai saya untuk perjalanan singkat ke masa lalu.
Kajian logik terawal dikaitkan dengan orang Yunani purba, terutamanya Aristotle, yang sering dipanggil "Bapa Logik." Beliau membangunkan sistem logik formal yang meletakkan asas untuk penggunaan operator logik.
Asas matematik sebenar pengendali logik seperti yang kita kenali hari ini mula terbentuk dengan kemunculan logik simbolik pada abad ke-19. Ia menggunakan simbol untuk mewakili bentuk dan struktur logik, yang membolehkan penaakulan yang lebih kompleks dan abstrak.
George Boole, seorang ahli matematik dan logik Inggeris abad ke-19, dalam karya seminalnya "The Laws of Thought" (1854), memperkenalkan pendekatan algebra kepada logik. Di sini nilai boleh sama ada benar atau salah, dan operasi boleh dilakukan pada nilai ini, sama dengan operasi algebra. Sistem ini termasuk pengendali logik asas:
Membina kerja Boole, ahli matematik dan logik lain mengembangkan skop dan kedalaman logik simbolik. Dan pada pertengahan abad ke-20 ia menemui tanah baru dan subur dalam bidang sains komputer yang baru muncul. Sifat perduaan logik Boolean terbukti sangat sesuai dengan litar digital di tengah-tengah komputer, di mana data boleh diwakili sebagai siri 0s dan 1s, dan pengendali logik boleh mengawal aliran data ini.
Pengendali logik menjadi bahagian asas bahasa pengaturcaraan, membolehkan pembinaan logik pengiraan yang kompleks dan proses membuat keputusan dalam perisian. Hari ini, ia adalah penting dalam sintaks hampir setiap bahasa pengaturcaraan.
Tanda sama telah diperkenalkan pada tahun 1557 oleh ahli matematik Wales Robert Recorde dalam bukunya "The Whetstone of Witte." Recorde semakin bosan menulis "sama dengan" berulang kali dalam kerjanya, jadi dia memilih dua garis selari yang sama panjang dengan simbol untuk kesamaan. Seperti yang dia katakan, ia adalah kerana "noe 2 thynges can be moare equalle." Ini merupakan perkembangan penting dalam tatatanda matematik, memberikan cara yang ringkas dan jelas untuk menyatakan kesaksamaan.
Pada hari-hari awal pengaturcaraan, terutamanya dengan kod mesin dan bahasa pemasangan, konsep "tugasan" lebih kepada menyimpan dan memindahkan data antara daftar dan lokasi memori. Arahan telah diberikan menggunakan opcode khusus yang mengarahkan mesin untuk melaksanakan operasi ini.
Memandangkan bahasa pengaturcaraan peringkat tinggi dibangunkan, terdapat keperluan untuk cara yang lebih abstrak dan boleh dibaca oleh manusia untuk mewakili operasi menetapkan nilai kepada pembolehubah. Ini membawa kepada penggunaan tanda sama dengan sebagai pengendali tugasan dalam banyak bahasa, bermula dengan FORTRAN pada tahun 1950-an.
Penggunaan = untuk tugasan mencipta beberapa kesamaran dengan makna matematik kesamaan. Ini menghasilkan pengenalan simbol yang berbeza untuk menjelaskan niat dalam pengaturcaraan:
Dari masa ke masa, bahasa pengaturcaraan telah memperkenalkan pelbagai bentuk pengendali tugasan untuk mengendalikan operasi yang berbeza dengan cekap, seperti pengendali tugasan kompaun (+=, -=, dll.) dan, lebih baru-baru ini, pengendali tugasan logik dalam JavaScript.
Pengendali tugasan logik ialah gula sintaksis dalam JavaScript yang menggabungkan tugasan (=) dengan pengendali penyatuan logik (&&, ||) atau batal (??). Terdapat tiga jenis:
Operator &&= ialah pintasan untuk menetapkan nilai pembolehubah hanya jika ia pada masa ini memegang nilai kebenaran. Ia amat berguna dalam senario di mana tindakan hanya perlu diteruskan jika syarat tertentu kekal benar.
Contoh Kes Penggunaan: Togol Ciri
Bayangkan senario di mana ciri tertentu hanya perlu didayakan untuk pentadbir:
const isAdmin = user.isAdmin(); let canAccessDashboard = isAdmin; canAccessDashboard &&= user.isAuthenticated(); console.log(canAccessDashboard); // true if user is authenticated, otherwise false
Coretan kod ini memastikan bahawa canAccessDashboard hanya benar jika kedua-dua isAdmin dan user.isAuthenticated() adalah benar, dengan berkesan menjaga ciri di sebalik dua syarat.
Pengendali ||= membenarkan anda untuk menetapkan nilai kepada pembolehubah jika pembolehubah pada masa ini memegang nilai palsu (cth., null, undefined, 0, false, ""). Ini amat berguna untuk menetapkan nilai lalai.
Contoh Kes Penggunaan: Tetapan Lalai
const userSettings = { theme: null, }; // Set default theme if none is specified userSettings.theme ||= "dark"; console.log(userSettings.theme); // Outputs 'dark'
Pengendali ini sesuai untuk memulakan pembolehubah yang belum ditetapkan, memastikan aplikasi anda menggunakan lalai yang wajar tanpa menulis ganti nilai palsu yang berpotensi bermakna seperti 0 atau palsu.
The ?? operator, yang dikenali sebagai operator penggabungan batal, adalah tambahan yang agak baru kepada bahasa pengaturcaraan. Ia bukan pengendali tugasan logik dalam erti kata yang ketat, walaupun spesifikasi ES2021 mengklasifikasikannya seperti itu, kerana ia tidak berdasarkan pengendali logik. Sebaliknya, pembangunannya lebih berkait rapat dengan keperluan praktikal pengaturcaraan, terutamanya dalam mengendalikan nilai null dan undefined dengan cara yang bersih dan boleh diramal.
Pengendali ??= digunakan untuk menetapkan nilai kepada pembolehubah jika dan hanya jika pembolehubah itu pada masa ini batal atau tidak ditentukan. Ini lebih tepat daripada operator ||=, yang turut mempertimbangkan nilai palsu yang lain.
Contoh Kes Penggunaan: Lalai Konfigurasi
const config = { timeout: 0, }; config.timeout ??= 5000; // Set default timeout if not specified, i.e. undefined, or null console.log(config.timeout); // Outputs 0, preserving the explicitly set falsy value
Pengendali ini amat berguna dalam konfigurasi dan tetapan di mana lalai seharusnya hanya mengisi nilai yang tiada tanpa menggantikan tetapan palsu tetapi sah seperti 0.
Menggunakan operator penugasan logik, bukannya pernyataan if atau ternary, mengurangkan jumlah kod yang perlu anda tulis dan boleh menjadikan niat anda lebih jelas kepada pembangun lain. Seperti banyak ciri, kuncinya ialah menggunakan pengendali ini dengan bijak, terutamanya apabila berurusan dengan nilai palsu yang sah dalam konteks kod anda.
Terdapat lebih banyak operator tugasan dalam JavaScript, seperti operator penugasan shift kiri (<<=). Itu kelihatan kurang sesuai untuk saya tetapi mungkin bernilai siaran lain pada satu ketika...
(Imej muka depan oleh starline di Freepik)
Atas ialah kandungan terperinci George dan Robert berjalan ke sebuah bar.... Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!