JavaScript menyediakan beberapa cara untuk mengendalikan nilai yang tidak ditentukan atau nol dalam kod. Dua operator biasa yang digunakan untuk tujuan ini ialah pengendali penggabungan batal (??) dan operator ATAU logik (||). Walaupun pengendali ini mungkin kelihatan serupa pada pandangan pertama, tingkah laku mereka boleh berbeza dengan ketara dalam situasi tertentu. Memahami perbezaan antara kedua-dua operator ini adalah penting, terutamanya bagi pemula yang ingin menulis kod yang lebih tepat dan bebas pepijat.
Dalam panduan ini, kita akan meneroka perbezaan antara ?? dan || dalam JavaScript, pecahkan langkah demi langkah dengan contoh supaya anda boleh beralih dari sifar kepada wira dalam masa yang singkat.
Pengendali penggabungan yang batal ?? digunakan untuk memberikan nilai sandaran apabila berurusan dengan null atau undefined. Ia hanya menyemak sama ada nilai itu batal atau tidak ditentukan—dan jika ya, ia mengembalikan nilai sandaran yang diberikan.
Sintaks:
let result = value ?? fallbackValue;
Dalam ungkapan ini, jika nilai sama ada batal atau tidak ditentukan, fallbackValue akan dikembalikan.
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
Dalam contoh ini, nama adalah null, jadi defaultName diberikan 'John Doe' sebagai sandaran.
Pengendali OR logik || ialah operator lain yang digunakan untuk nilai sandaran, tetapi ia berfungsi secara berbeza. Ia menyemak sama ada bahagian sebelah kiri ungkapan ialah nilai palsu. Dalam JavaScript, nilai palsu termasuk null, undefined, false, 0, NaN dan '' (rentetan kosong).
Sintaks:
let result = value || fallbackValue;
Jika nilai palsu, fallbackValue akan dikembalikan.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
Dalam kes ini, umur ialah 0, iaitu nilai palsu, jadi defaultAge ditetapkan 18.
Pada pandangan pertama, ?? dan || mungkin kelihatan mempunyai tujuan yang sama—menyediakan nilai sandaran—tetapi terdapat perbezaan penting:
Perbezaan halus ini menjadi penting apabila anda berurusan dengan nilai palsu tetapi sah seperti 0, '' atau palsu.
let result = value ?? fallbackValue;
Di sini, kiraan ialah 0, iaitu nilai yang sah tetapi palsu dalam JavaScript.
Pilihan antara ?? dan || bergantung pada tingkah laku khusus yang anda mahukan.
Contoh:
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
Dalam contoh ini, rentetan kosong '' ialah input pengguna yang sah, jadi ?? membolehkannya melepasi tanpa menggantikannya dengan sandaran.
Contoh:
let result = value || fallbackValue;
Di sini, palsu dianggap sebagai palsu dan sandaran 'Tidak dilog masuk' digunakan.
Sekarang anda tahu perbezaannya, mari lihat beberapa kesilapan biasa yang sering dilakukan oleh pemula dan cara mengelakkannya.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
Masalah: Anda mahu memaparkan 0 sebagai skor, tetapi || menggantikannya dengan 'Tiada markah' kerana 0 adalah palsu.
Penyelesaian: Gunakan ?? untuk membenarkan 0 melalui.
let count = 0; let defaultCount1 = count ?? 10; // Using nullish coalescing let defaultCount2 = count || 10; // Using logical OR console.log(defaultCount1); // Output: 0 console.log(defaultCount2); // Output: 10
let userInput = ''; let fallbackInput = userInput ?? 'default input'; console.log(fallbackInput); // Output: ''
Penjelasan: userPreference adalah batal, jadi fallback false digunakan. Ini adalah kelakuan yang betul untuk ??.
Ya, anda boleh menggunakan kedua-dua pengendali dalam bahagian yang berbeza dalam ungkapan yang sama jika perlu.
Contoh:
let isLoggedIn = false; let loginStatus = isLoggedIn || 'Not logged in'; console.log(loginStatus); // Output: 'Not logged in'
Ini pertama kali menyemak untuk menggunakan null atau undefined ?? dan kemudian semak nilai palsu lain menggunakan ||.
The ?? operator disokong dalam penyemak imbas moden, tetapi untuk persekitaran yang lebih lama, anda mungkin perlu menggunakan transpiler seperti Babel.
Tidak, ?? hanya menyemak untuk null dan undefined, bukan untuk nilai palsu lain seperti false, 0 atau ''.
Memahami perbezaan antara ?? dan || dalam JavaScript adalah penting untuk menulis kod yang mantap dan bebas ralat. Walaupun kedua-dua pengendali membantu dalam menyediakan nilai sandaran, tingkah laku mereka berbeza apabila melibatkan pengendalian nilai palsu. guna?? apabila anda perlu menyemak sama ada null atau undefined, dan gunakan || apabila anda ingin menyemak sebarang nilai palsu.
Dengan menguasai pengendali ini, anda akan dapat menulis kod yang lebih fleksibel dan tepat yang berkelakuan tepat seperti yang dimaksudkan.
Atas ialah kandungan terperinci Jangan Keliru?? dengan || dalam JavaScript: Inilah Perbezaannya!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!