Di JS Anda dapat mengembalikan Boolean yang memiliki properti khusus. Misalnya. ketika Modernizr menguji dukungan video, ia mengembalikan true
atau false
tetapi Boolean yang dikembalikan (Bool adalah objek kelas satu di JS) memiliki properti yang menentukan format apa yang didukung. Pada awalnya itu sedikit mengejutkan saya tetapi kemudian saya mulai menyukai ide itu dan mulai bertanya-tanya mengapa itu tampaknya digunakan dengan hemat?
Sepertinya cara yang elegan untuk berurusan dengan semua skenario di mana Anda pada dasarnya ingin tahu apakah sesuatu itu benar atau salah tetapi Anda mungkin tertarik pada beberapa info tambahan yang dapat Anda tetapkan tanpa mendefinisikan objek pengembalian kustom atau menggunakan fungsi panggilan balik yang disiapkan untuk menerima lebih banyak parameter. Dengan cara ini Anda mempertahankan fungsi tanda tangan yang sangat universal tanpa mengurangi kapasitas untuk mengembalikan data yang lebih kompleks.
Ada 3 argumen yang menentangnya yang bisa saya bayangkan:
- Agak jarang / tidak terduga ketika mungkin lebih baik untuk setiap antarmuka menjadi jelas dan tidak rumit.
- Ini mungkin argumen orang bodoh, tetapi dengan itu menjadi sedikit kasus tepi saya bisa membayangkan diam-diam menjadi bumerang di beberapa pengoptimal JS, uglifier, VM atau setelah perubahan spesifikasi bahasa pembersihan kecil dll.
- Ada yang lebih baik - ringkas, jelas dan umum - cara melakukan hal yang persis sama.
Jadi pertanyaan saya adalah adakah alasan kuat untuk menghindari menggunakan Boolean dengan properti tambahan? Apakah itu tipuan atau hadiah?
Plot tikungan peringatan.
Di atas adalah pertanyaan asli dengan penuh kemuliaan. Seperti yang ditunjukkan oleh Matthew Crumley dan senevoldsen, itu didasarkan pada premis yang salah (salah?). Dalam tradisi JS yang bagus apa yang dilakukan Modernizr adalah trik bahasa dan yang kotor. Itu bermuara pada JS yang memiliki bool primitif yang jika disetel ke false akan tetap salah bahkan setelah MENCOBA untuk menambahkan alat peraga (yang gagal diam-diam) dan objek Boolean yang dapat memiliki alat peraga khusus tetapi menjadi objek selalu benar. Modernizr mengembalikan boolean false atau objek Boolean yang sebenarnya.
Pertanyaan awal saya mengasumsikan triknya bekerja secara berbeda dan sebagian besar jawaban populer berhubungan dengan aspek standar pengkodean (yang benar-benar valid). Namun saya menemukan jawaban yang membantah seluruh trik ini sangat membantu (dan juga argumen terakhir yang menentang penggunaan metode ini) jadi saya menerima salah satunya. Terima kasih untuk semua peserta!
null
jika tidak didukung dan berbagai format jika demikian. Daftar dianggap benar di JS, dan null
palsu.