ブール値false
または整数(0を含む)のいずれかになる変数があります。次のようなswitchステートメントに入れたいです。
switch(my_var){
case 0:
// Do something
break;
case 1:
// Do something else
break;
case false:
// Some other code
}
Google Chromeでのテストでは完全に機能するようですが、一部のブラウザーではmy_var
がfalse
の場合、実行されるのではないかと心配しているため、使用するのが少し緊張しています0 == false
以降の最初のケース。
JavaScriptには、switchステートメントが0 !== false
のような厳密な比較を使用するという公式なものがあるかどうか疑問に思っていますが、自分で何も見つけることができず、これがうまくいくかどうかわかりませんさまざまなJavaScriptエンジン。 switchステートメントによって行われた比較が厳密であることが保証されているかどうかは誰にもわかりますか?
ECMA 262、セクション12.11 、2番目のアルゴリズム、4.cを見てください。
c。入力が===演算子で定義されているClauseSelectorと等しい場合、...
http://qfox.nl/notes/11 は質問に答えます。 (この男はJavaScriptの核心について多くのことを知っています)
JavaScriptのスイッチは、厳密な型チェック(===)を使用します。したがって、強制を心配する必要はありません。これにより、いくつかのwtfjsが防止されます。一方、強制を頼りにしている場合、それを強制することはできないため、不運です。
はい、switch
"[厳密な比較を使用]、===
"。