2012-01-22 5 views
1

次のコードで予期しないトークンが見つかりました。javascriptで予期しないトークンが切り替わる

 switch (hobby) { 
      case =" painting ": 
       message = "Van Gogh was good at that."; 
        break; 
      case =" drawing ": 
       message = "Hey! Van Gogh did that too."; 
        break; 
      case =" playing guitar ": 
       message = "Bob Dylan played guitar."; 
        break; 
      case =" sleeping in ": 
       message = "My favorite hobby in the winter."; 
        break; 

      default 
     } 

誰かが迷っているのを見てもらえますか?

+0

スイッチの前のコードでは、私はvar hobby = prompt( "あなたは何をしたいですか?絵画、絵画、ギターを弾く、または寝ていますか? – FileasFogg

+0

終了するデフォルトの行は、実際には現在のコードにはありません。 – FileasFogg

+0

あなたが欠けているものではありません、それはあなたが追加しているものです;)本当に*重要でない限り、通常は、あなたは 'default'ハンドラを持つことを望みます。その旨のコメントは、将来のコードリーダーにとって有益なものになります。 –

答えて

2

構文はオフです。 caseの後に=を削除します。またdefaultの後に:を置く必要があります。

switchの詳細については、hereを参照してください。

+0

」の後ろに ':'を追加するのを忘れると、このエラーが発生することがよくあります。また、大文字と小文字のオペランドから空白を削除する(つまり、ペイントを '' 'ペイント "")、これはユーザーが答えの前後にスペースを入れる可能性が低いためです。 (私はあなたの質問に直接関係していないので、これを私の答えの一部ではなくコメントとして追加しています) – cheeken

4

あなたは、各caseのうち、breakすることを避けるために、関数のセマンティクスを活用することができます。

var message = (function(){ 
    switch (hobby) { 
    case 'painting':  return 'Van Gogh was good at that.' 
    case 'drawing':   return 'Hey! Van Gogh did that too.' 
    case 'playing guitar': return 'Bob Dylan played guitar.' 
    case 'sleeping in':  return 'My favorite hobby in the winter.' 
    } 
}()) 

このロジックを表現するための最良の方法は、しかし、おそらく次のようなものです:

var messages = { 
    'painting':  'Van Gogh was good at that.', 
    'drawing':  'Hey! Van Gogh did that too.', 
    'playing guitar': 'Bob Dylan played guitar.', 
    'sleeping in': 'My favorite hobby in the winter.' 
} 
var message = messages[hobby] 
+0

そして 'default:return ''; case。 – darvids0n

関連する問題