JSの中のswitchの珍しい特性
3434 ワード
ほとんどの言語のswitch文の文法と特性は同じですが、JavaScript言語の中のswitch文の特徴は特別です.他のプログラミング言語を知ると、これらの特性はJavaScriptのbugのように感じることもあります.これらの特性を知らないなら、意図的にこれらの特性を使う時、これらの特性を理解しないでください.非常に難しい問題をもたらします.
目次
一、switch文の文法 expression:caseサブステートメントにマッチする表現. case valueN:オプション;expressionにマッチするcase子文.expressionが所与のvalueNに一致する場合、switch文が終了するか、またはbreakに出会うまで、case子文の文が実行される. default:オプション;default子文を定義します.一つのswitch文は一つのdefault子文しかありません.与えられた場合、このサブフレーズは、いずれのcase文にもexpressionの値が一致しない場合に実行されます. switch文を記述すると、まずそのexpressionを計算します.そして、最初のcase子文から、その表現値が入力されたexpressionの値に厳密に等しい(=====)という子文を見つけて、その子文に関する語句を実行します.case子句がマッチしていない場合は、プログラムはそのオプションのdefault子文を探します.見つかったらdefaultの関連文を実行します.default子文がない場合は、プログラムはswitchが終わるまで実行されます.一般的にはdefaultをswitchの最後のサブフレーズとしますが、default子文をcase子文の間や前に置いてもいいです.
break文はオプションであり、関連するcase文からプログラムを直ちにswitch文のブロックから飛び出させ、switch文のブロックの後の文を実行します.breakが省略されると、プログラムは引き続きswitch文の次の文を実行します.
二、switch文の浸透特性
なぜなら:
したがって、マッチするcase子文に
例:
テスト4:私とマッチするcase子文がありません.
以上より、次のようになります.
switch文の浸透特性(本人がカスタマイズした名前で、標準名ではない)
マッチするswitch子文に
目次
、switch
、switch
内容一、switch文の文法
switch (expression) {
case value1:
// expression value1 ,
[break;]
case value2:
// expression value2 ,
[break;]
...
case valueN:
// expression valueN ,
[break;]
[default:
// expression value ,
[break;]]
}
break文はオプションであり、関連するcase文からプログラムを直ちにswitch文のブロックから飛び出させ、switch文のブロックの後の文を実行します.breakが省略されると、プログラムは引き続きswitch文の次の文を実行します.
二、switch文の浸透特性
なぜなら:
case valueN
は、expressionにマッチするcaseサブフレーズに使用されるからである.expressionが所与のvalueNに一致する場合、switch文が終了するか、またはbreakに出会うまで、case子文の文を実行する.したがって、マッチするcase子文に
break
がない場合、このcase子文の文はこのswitch文の最後まで実行され、default子文とdefault子文の後のcase子文を含み、たとえそのcase子文の後のcase子文が一致しなくても同様に実行される.例:
function switchTest(value) {
switch (value) {
case 1:
console.log("case 1 : default ");
break;
case 2:
console.log("case 2 : default ");
case 3:
console.log("case 3 : default ");
break;
case 4:
console.log("case 4 : default ");
case 5:
console.log("case 5 : default ");
default:
console.log("default ");
case 6:
console.log("case 6 : default ");
case 7:
console.log("case 7 : default ");
}
console.log("switch ");
}
テスト1:マッチするcase子文にbreakがあります.switchTest(1)
出力:case 1 : default
switch
テスト2:マッチするcase子文にはbreakがありません.switchTest(2)
出力:case 2 : default
case 3 : default
switch
テスト3:マッチするcase子文にはbreakがありません.switchTest(4)
出力:case 4 : default
case 5 : default
default
case 6 : default
case 7 : default
結論:case子文の中でそれ以降にbreak
がない場合、そのcase子文の中の文はこのswitch文の最後まで実行され、default子文とdefault子文の後のcase子文を含む.テスト4:私とマッチするcase子文がありません.
switchTest(" case")
出力:default
case 6 : default
case 7 : default
switch
結論:default子文中およびその後break
がない場合、default子文中の文はこのswitch文が終わるまで、default子文後のcase子文を含む.以上より、次のようになります.
switch文の浸透特性(本人がカスタマイズした名前で、標準名ではない)
マッチするswitch子文に
break
がない場合は、このswitch子文の中の文が最後まで実行されます.default子文とdefault子文の後のcase子文が含まれています.case子文の後のcase子文が一致しなくても、同様に実行されます.