Memahami Operator Logik dalam JavaScript: Mengapa Mereka Boleh Mengembalikan Objek
Dalam JavaScript, operator logik seperti && (dan) dan || (atau) biasanya dijangka menilai kepada nilai boolean (benar atau salah). Walau bagaimanapun, dalam senario tertentu, mereka juga boleh mengembalikan objek. Tingkah laku yang mengejutkan ini pada mulanya boleh membuatkan anda bingung.
Untuk menyelidiki fenomena ini, mari kita analisa coretan kod berikut:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); var _ = obj && obj._;
Dalam contoh pertama, obj.fn dinilai pada mulanya. Jika ia ditakrifkan, hasil ungkapan obj.fn() dikembalikan. Jika tidak, ungkapan obj._ dinilai atau objek baharu dibuat jika obj.fn mahupun obj._ wujud.
Begitu juga, dalam contoh kedua, obj dinilai terlebih dahulu. Jika obj wujud (menilai kepada benar), hasilnya ialah nilai obj._. Walau bagaimanapun, jika obj tidak wujud (menilai kepada palsu), nilai obj asal itu sendiri dikembalikan.
Menyingkap Tingkah Laku Litar Pintas Logik
Tingkah laku ini berpunca daripada sifat litar pintas logik && dan ||. Dalam erti kata lain, pengendali ini cuba mengembalikan "nilai logik" secepat mungkin, mengelakkan penilaian yang tidak perlu di mana hasilnya sudah jelas.
Dalam kes ||, jika ungkapan sebelah kiri menilai kepada benar, ia dikembalikan serta-merta, dan ungkapan sebelah kanan tidak dinilai sama sekali. Sebaliknya, jika ungkapan sebelah kiri dinilai kepada palsu, ungkapan sebelah kanan dinilai dan dikembalikan.
Kepalsuan dan Pulangan Nilai dalam JavaScript
Aspek lain yang mempengaruhi tingkah laku ini ialah cara nilai palsu dilayan dalam JavaScript. Nilai palsu dalam JavaScript termasuk false, 0, NaN, rentetan kosong, null dan undefined.
Sebelum versi 1.2 JavaScript, || dikembalikan palsu apabila ungkapan dinilai kepada palsu. Walau bagaimanapun, dari versi 1.2 dan seterusnya, ia mengembalikan nilai sebenar ungkapan. Ini bermakna jika ungkapan sebelah kiri palsu, nilai ungkapan sebelah kanan akan dikembalikan.
Begitu juga, untuk &&, jika ungkapan sebelah kiri bernilai benar, ungkapan sebelah kanan dinilai, dan nilainya dikembalikan. Walau bagaimanapun, jika ungkapan sebelah kiri dinilai kepada palsu, palsu dikembalikan dalam JS 1.0 dan 1.1, manakala nilai ungkapan sebelah kiri dikembalikan dari JS 1.2 dan seterusnya.
Kesimpulan
Memahami tingkah laku litar pintas logik dan perlakuan JavaScript terhadap nilai palsu adalah penting untuk memahami kadangkala-mengejutkan nilai pulangan pengendali logik. Dengan menyedari bahawa pengendali ini mengutamakan kecekapan dan kepalsuan boleh mempunyai tafsiran berbeza dalam JavaScript, anda boleh menavigasi kerumitan operator ini dengan yakin.
Atas ialah kandungan terperinci Bagaimanakah Operator Logik JavaScript Boleh Mengembalikan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!