Jadual Kandungan
Apa ??= sebenarnya
Bilakah hendak menggunakan ??=
1. Menetapkan nilai konfigurasi lalai
2. Inisialisasi pembolehubah malas
3. Bekerja dengan sifat objek pilihan
Contoh Praktikal: Pengurus Konfigurasi
Batasan dan gotchas
Ringkasan
Rumah pembangunan bahagian belakang tutorial php Memanfaatkan pengendali tugasan comelan null (`?? =`)

Memanfaatkan pengendali tugasan comelan null (`?? =`)

Aug 01, 2025 am 07:43 AM
PHP if Operators

Operasi tugasan hanya berkuatkuasa apabila batal atau tidak ditentukan di sebelah kiri, 1. Digunakan untuk menetapkan nilai konfigurasi lalai, seperti user.age ?? = 18; 2. Melaksanakan inisialisasi malas pembolehubah, seperti cache? 3. Kekalkan nilai yang sah apabila menggabungkan sifat objek pilihan, seperti userData.email ?? = getDefaultEmail (); Pengendali ini tidak akan menimpa nilai -nilai palsu seperti 0, '' atau palsu, yang lebih selamat daripada || =, dan sesuai untuk persekitaran moden, akhirnya menjadikan kod lebih ringkas, selamat dan boleh diramal.

Memanfaatkan pengendali tugasan comelan null (`?? =`)

Pengendali tugasan coalescing null ( ??= ) adalah ciri ringkas dan berkuasa yang diperkenalkan dalam JavaScript moden (ES2021) yang membantu menyelaraskan tugasan bersyarat berdasarkan pemeriksaan null atau undefined . Ia amat berguna apabila anda ingin memberikan nilai lalai kepada pembolehubah hanya jika ia kini null atau undefined .

Memanfaatkan pengendali tugasan comelan null (`?? =`)

Apa ??= sebenarnya

Operator ??= berfungsi seperti ini:

 A ?? = B;

Ini bermaksud:
"Jika a adalah null atau undefined , berikan b ke a Jika tidak, biarkan a berubah."

Memanfaatkan pengendali tugasan comelan null (`?? =`)

Ia bersamaan dengan menulis:

 jika (a == null) {
  A = B;
}

Tetapi lebih padat dan boleh dibaca.

Memanfaatkan pengendali tugasan comelan null (`?? =`)

? null ??= undefined 0 '' false

Bilakah hendak menggunakan ??=

1. Menetapkan nilai konfigurasi lalai

Apabila bekerja dengan pilihan pengguna yang disediakan, anda sering ingin mengisi mungkir hanya apabila sifat-sifat tertentu hilang.

 fungsi createUser (tetapan) {
  const user = {};
  user.name = settings.name ?? 'Anonymous';
  user.age ?? = settings.age ?? 18;
  user.isactive ?? = Settings.Isactive ?? Benar;
  Pengguna pulangan;
}

Atau lebih bersih:

 fungsi createUser (tetapan) {
  const user = {name: 'anonymous', umur: 18, isactive: true};
  user.name ?? = settings.name;
  user.age ?? = settings.age;
  user.isactive ?? = settings.isactive;
  Pengguna pulangan;
}

Ini mengelakkan penindasan dengan undefined semasa mengekalkan nilai -nilai palsu yang disengajakan.

2. Inisialisasi pembolehubah malas

Anda boleh menggunakan ??= untuk memulakan nilai mahal atau bersyarat hanya apabila diperlukan.

 biarkan cache;
Cache? // berjalan sekali sahaja

Walaupun cache ditugaskan semula untuk null kemudian, corak ini membolehkan reinitialization - tidak seperti ||= yang akan gagal pada hasil yang palsu.

⚠️ Bandingkan dengan ||= :
||= Pencetus pada sebarang nilai palsu ( 0 , '' , false , dan lain -lain), yang boleh menyebabkan pepijat.
??= selamat kerana ia hanya mengambil berat tentang null dan undefined .

3. Bekerja dengan sifat objek pilihan

Apabila menggabungkan data separa, ??= membantu mengekalkan keadaan sedia ada.

 const userData = {id: 123, Nama: 'Alice'};
userData.email ?? = getDefaultEmail (userData.Name);
userData.Role ?? = FetchDefaUltrole (); // async atau dikira

Ini mengelakkan secara tidak sengaja membersihkan rentetan yang sah tetapi kosong atau nilai false .

Contoh Praktikal: Pengurus Konfigurasi

 config kelas {
  pembina () {
    this.APikey = null;
    this.timeout = 0;
    this.retries = false;
  }

  applyDefaults () {
    this.APIKEY ?? = process.env.api_key;
    this.timeout ?? = 5000;
    this.retries ?? = 3;
  }
}

Di sini:

  • timeout adalah 0 → disimpan sebagai 0 (tidak diganti)
  • retries adalah false → tetap false
  • Hanya nilai yang benar -benar hilang ( null ) mendapat mungkir

Tingkah laku ini ??= sesuai untuk sistem konfigurasi.

Batasan dan gotchas

  • Tidak terdapat dalam persekitaran yang lebih tua - memerlukan ES2021 (Node.js 16, pelayar moden). Gunakan babel atau cek dalam kod warisan.
  • Tidak boleh digunakan secara langsung pada pemusnahan objek seperti param lalai, tetapi aplikasi logik yang serupa:
 // Destructuring dengan lalai masih menggunakan `=`, bukan `?? =`
const {name = 'default'} = obj;

// tetapi anda boleh lakukan:
Let {Apikey} = obj;
Apikey ?? = 'Fallback-Key';
  • Perkara-perkara litar pintas : sebelah kanan dinilai hanya jika kiri adalah null / undefined .
 biarkan x = 1;
x ?? = console.log ('ini tidak akan berjalan'); // tiada output

Ringkasan

Gunakan ??= Bila:

  • Anda mahu memberikan mungkir hanya untuk null / undefined
  • Anda perlu mengekalkan nilai palsu seperti 0 , '' , atau false
  • Anda melakukan permulaan malas atau menggabungkan data separa

Elakkan ||= Dalam kes ini - ia terlalu luas.

Pada dasarnya:
??= = "Hanya berikan jika benar -benar hilang"
||= = "Berikan jika palsu" - sering terlalu agresif

Dengan ??= , kod anda menjadi lebih bersih, lebih selamat, dan lebih diramalkan apabila mengendalikan nilai pilihan.

Atas ialah kandungan terperinci Memanfaatkan pengendali tugasan comelan null (`?? =`). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Panduan pemula ' s ke Rimworld: Odyssey
1 bulan yang lalu By Jack chen
Skop pembolehubah PHP dijelaskan
4 minggu yang lalu By 百草
Petua untuk menulis komen php
3 minggu yang lalu By 百草
Mengulas kod dalam php
3 minggu yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1509
276
Operator Coalescing Null (??): Pendekatan Moden untuk Mengendalikan Nulls Operator Coalescing Null (??): Pendekatan Moden untuk Mengendalikan Nulls Aug 01, 2025 am 07:45 AM

Thenullcoalescingoperator (??) menyediakanConcisewayToassignDefaultValuesWendealingWithnullorundefined.1.itreturnstheleftoperandifitisnotnullorundefined;

Demystifying jenis juggling: Perbezaan kritikal antara `==` dan `===` Demystifying jenis juggling: Perbezaan kritikal antara `==` dan `===` Jul 30, 2025 am 05:42 AM

Menggunakan === bukan == adalah kunci untuk mengelakkan kesilapan penukaran jenis PHP, kerana == akan menyebabkan hasil yang tidak dijangka, dan === membandingkan nilai dan jenis pada masa yang sama untuk memastikan penghakiman yang tepat; Sebagai contoh, 0 == "palsu" adalah benar tetapi 0 === "palsu" adalah palsu, jadi apabila berurusan dengan nilai pulangan yang mungkin 0, rentetan kosong atau palsu, === harus digunakan untuk mencegah kesilapan logik.

Beyond `if-else`: Meneroka struktur kawalan alternatif PHP Beyond `if-else`: Meneroka struktur kawalan alternatif PHP Jul 30, 2025 am 02:03 AM

Struktur kawalan alternatif PHP menggunakan kolon dan kata kunci seperti endif dan endfor dan bukannya pendakap keriting, yang dapat meningkatkan kebolehbacaan HTML campuran. 1. Jika-Elseif-Else bermula dengan kolon dan berakhir dengan endif, menjadikan blok keadaan lebih jelas; 2. 3. Untuk dan sementara jarang digunakan, mereka juga disokong. Sintaks ini mempunyai kelebihan yang jelas dalam pandangan fail: mengurangkan kesilapan sintaks, meningkatkan kebolehbacaan, dan sama dengan struktur tag HTML. Tetapi pendakap keriting harus terus digunakan dalam fail PHP tulen untuk mengelakkan kekeliruan. Oleh itu, sintaks alternatif disyorkan dalam templat yang menggabungkan PHP dan HTML untuk meningkatkan pemeliharaan kod.

Mengoptimumkan logik bersyarat: implikasi prestasi `if` vs` switch` Mengoptimumkan logik bersyarat: implikasi prestasi `if` vs` switch` Aug 01, 2025 am 07:18 AM

Kadang -kadang ia akan menjejaskan prestasi, bergantung kepada bahasa, pengoptimuman pengkompil dan struktur logik; 1. Jika pernyataan dilaksanakan dengan teratur, dan kerumitan masa kes terburuk adalah O (n), keadaan yang paling mungkin harus diletakkan terlebih dahulu; 2. Pernyataan Switch boleh dioptimumkan oleh pengkompil ke jadual lompat O (1) apabila syarat -syarat adalah bilangan bulat yang berterusan, banyak cawangan dan nilai -nilai yang dikumpulkan pemalar; 3. Apabila pembolehubah tunggal dibandingkan dengan berbilang bilangan bulat malar dan terdapat banyak cawangan dan suis lebih cepat; 4. Apabila ia melibatkan penghakiman skop, keadaan kompleks, jenis bukan integer atau cawangan yang lebih sedikit, jika jika lebih sesuai atau mempunyai prestasi yang sama; 5. Bahasa yang berbeza (seperti C/C, Java, JavaScript, C#) mempunyai tahap pengoptimuman yang berbeza dari suis, dan mereka perlu diuji dalam kombinasi dengan ujian sebenar; SWI mesti digunakan terlebih dahulu

Ekspresi PHP 8's `Match`: alternatif yang unggul untuk rantai` if-elseif` Ekspresi PHP 8's `Match`: alternatif yang unggul untuk rantai` if-elseif` Aug 02, 2025 pm 02:47 PM

Ekspresi perlawanan menyediakan alternatif yang lebih ringkas dan selamat dalam Php8. Berbanding dengan IF-Elseif dan Switch, ia secara automatik melakukan perbandingan yang ketat (===) untuk mengelakkan kesilapan perbandingan jenis longgar; 2. Perlawanan adalah ungkapan yang boleh mengembalikan nilai secara langsung, sesuai untuk tugasan dan pulangan fungsi, meningkatkan kesederhanaan kod; 3. Perlawanan selalu menggunakan pemeriksaan jenis yang ketat untuk mengelakkan pertandingan yang tidak dijangka antara boolean, boolean dan rentetan; 4. Menyokong pemadanan multi-lengan tunggal (seperti 0, palsu, ''), tetapi keadaan yang kompleks (seperti penghakiman pelbagai) masih memerlukan jika-elseif; Oleh itu, perlawanan harus digunakan terlebih dahulu apabila memetakan nilai tepat pembolehubah tunggal, sementara logik kompleks mengekalkan jika-elseif.

Refactoring bersarang `if` neraka: strategi untuk logik bersyarat bersih Refactoring bersarang `if` neraka: strategi untuk logik bersyarat bersih Jul 30, 2025 am 04:28 AM

Useguardclausestoreturnearlyandflattenstructure.2.ExtractComplexconditionsintodescriptiveFuntionsorvariablesforclarityandreuse.3.ReplaceMultiPleconditionconditionswithalookuptableorstrategypatterntocentninatmin

Apabila tidak menggunakan pengendali ternary: Panduan untuk kebolehbacaan Apabila tidak menggunakan pengendali ternary: Panduan untuk kebolehbacaan Jul 30, 2025 am 05:36 AM

Mengelakkan yang tidak dapat disangkal

`&&` vs `dan`: memperkenalkan perbezaan yang halus tetapi kritikal dalam php `&&` vs `dan`: memperkenalkan perbezaan yang halus tetapi kritikal dalam php Aug 01, 2025 am 06:04 AM

&& dan dan fungsi logik yang sama dalam PHP, tetapi keutamaannya berbeza, menghasilkan pesanan pelaksanaan yang berbeza; && keutamaan adalah lebih tinggi daripada dan dan dan keutamaan lebih rendah daripada pengendali tugasan =; Oleh itu $ kejayaan = TrueAndFalse sebenarnya dihuraikan sebagai ($ kejayaan = benar) danfalse, membuat kejayaan $ masih benar; 1. Gunakan && dan || dalam penghakiman bersyarat; 2. Gunakan dan dan atau hanya dalam aliran kawalan (seperti $ file = fopen () ordie ()); 3. Ekspresi kompleks harus menggunakan kurungan untuk menjelaskan keutamaan; 4. Elakkan pencampuran dan/atau dalam tugasan melainkan jika dimaksudkan secara jelas.

See all articles