一致するケース ラベルが見つかった場合、動的に型付けされた言語はどのように動作するのだろうか。まだ比較していない他のラベル値の評価を続行しますか? (大文字と小文字の重複ラベルまたはタイプ エラーを見つけるため)。
一般的な動的型付け言語はそこでどのように動作しますか?
一致するケース ラベルが見つかった場合、動的に型付けされた言語はどのように動作するのだろうか。まだ比較していない他のラベル値の評価を続行しますか? (大文字と小文字の重複ラベルまたはタイプ エラーを見つけるため)。
一般的な動的型付け言語はそこでどのように動作しますか?
ここではJavaScriptについてしか話せませんが、JavaScriptは、最初に両方のオペランドが同じタイプであることを確認してから、一致するラベルを検索し、次に値を確認します。一致するものが見つかった場合、switch caseはラベルに関連付けられたステートメントを実行し、switchステートメントから抜け出します(breakステートメントが見つかった場合)。
例:
notANumber='0'
switch (notANumber) {
case 0:
alert("It's a number, Jim.");
break;
case '0':
alert("It's a string, Jim.");
break;
}
これにより、というポップアップが表示されますIt's a string, Jim.
。実際にはCスイッチとそれほど違いはありません(悲しいことに;-))。
編集
ここ===
では、演算子を比較に使用します。これは、値だけでなくタイプもテストします。代わりに演算子を使用する場合==
、オペランドは値についてのみテストされます(これにより、最初のケースが真になります)。