2

一致するケース ラベルが見つかった場合、動的に型付けされた言語はどのように動作するのだろうか。まだ比較していない他のラベル値の評価を続行しますか? (大文字と小文字の重複ラベルまたはタイプ エラーを見つけるため)。

一般的な動的型付け言語はそこでどのように動作しますか?

4

2 に答える 2

1

ここでは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スイッチとそれほど違いはありません(悲しいことに;-))。

編集

ここ===では、演算子を比較に使用します。これは、値だけでなくタイプもテストします。代わりに演算子を使用する場合==、オペランドは値についてのみテストされます(これにより、最初のケースが真になります)。

于 2012-06-25T08:43:22.797 に答える