Operan Logik ATAU (||) dan Operan Bukan Boolean
Dalam JavaScript, operator OR logik (||) biasanya digunakan untuk menilai ungkapan boolean. Walau bagaimanapun, ia juga boleh digunakan pada operan bukan boolean, yang membawa kepada hasil yang tidak dijangka.
Pertimbangkan kod berikut:
<code class="javascript">var $time = Date.now || function() { return +new Date; };</code>
Dalam contoh ini, || operator digunakan untuk menetapkan fungsi kepada pembolehubah $time. Ungkapan menilai kepada hasil Date.now jika ia wujud (iaitu, ia bukan batal atau tidak ditentukan), jika tidak, ia melaksanakan fungsi tanpa nama, yang mengembalikan cap masa semasa.
Sebab bagi tingkah laku ini terletak pada peranan kedua || operator sebagai pengendali "lalai". Apabila kedua-dua operan bukan boolean, ia mengembalikan operan kiri jika ia benar (bukan null, undefined, rentetan kosong atau 0) dan operan kanan jika operan kiri adalah palsu.
Dalam kod yang diberikan, Date.now ialah nilai kebenaran, jadi operan kiri dikembalikan, iaitu fungsi Date.now yang asal. Walau bagaimanapun, jika Date.now tidak tersedia (mis., dalam penyemak imbas lama), operan sebelah kanan, yang merupakan fungsi tanpa nama, akan dilaksanakan sebaliknya.
Penggunaan || ini operator membenarkan pembangun untuk menentukan nilai lalai atau gelagat sandaran dengan cara yang ringkas. Sebagai contoh, kod berikut memberikan nilai kepada pembolehubah v, tetapi jika v tidak ditakrifkan, ia menetapkan nilai kepada 10:
<code class="javascript">value = v || 10;</code>
Begitu juga, kod berikut melindungi daripada mengakses sifat nullable objek:
<code class="javascript">var value = p && p.name;</code>
Kesimpulannya, || (logik ATAU) dalam JavaScript juga boleh digunakan dengan operan bukan boolean, di mana ia menilai ke operan kiri jika ia benar, atau ke operan kanan sebaliknya. Tingkah laku ini boleh berguna untuk menentukan nilai lalai dan menulis kod selamat-null.
Atas ialah kandungan terperinci Bolehkah Operator Logik OR (||) dalam JavaScript Mengendalikan Operand Bukan Boolean?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!