Apakah aman untuk mengasumsikan perbandingan ketat dalam pernyataan sakelar JavaScript?


105

Saya memiliki variabel yang dapat berupa boolean false, atau integer (termasuk 0). Saya ingin memasukkannya ke dalam pernyataan switch seperti:

switch(my_var){
    case 0:
         // Do something
         break;
    case 1:
         // Do something else
         break;
    case false:
         // Some other code
}

Dalam pengujian saya di Google Chrome, tampaknya berfungsi dengan sempurna, tetapi saya sedikit gugup untuk menggunakannya karena saya takut di beberapa browser, jika my_varada false, ini mungkin menjalankan kasus pertama sejak itu 0 == false.

Saya hanya ingin tahu apakah ada sesuatu yang resmi di JavaScript yang mengatakan pernyataan switch akan menggunakan perbandingan ketat seperti itu 0 !== false, tetapi saya tidak dapat menemukan apa pun sendiri, dan saya tidak yakin apakah ini akan berfungsi dengan baik di mesin JavaScript yang berbeda. Adakah yang tahu jika perbandingan yang dilakukan oleh pernyataan switch dijamin ketat?

Jawaban:



34

http://qfox.nl/notes/110 menjawab pertanyaan Anda. (Orang ini tahu banyak tentang seluk beluk JavaScript)

Sakelar di Javascript menggunakan pemeriksaan tipe ketat (===). Jadi Anda tidak perlu khawatir tentang paksaan, yang mencegah beberapa wtfjs :). Di sisi lain, jika Anda mengandalkan paksaan, sial karena Anda tidak bisa memaksanya.


jsfiddle.net/to469fLm/4 , Anda dapat menggeneralisasi fungsi pemaksaan untuk mencapai kebutuhan Anda
darethas

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.