переключить неожиданный токен в JavaScript - PullRequest
1 голос
/ 23 января 2012

Я обнаружил неожиданный токен в следующем коде.

        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
        }

Кто-нибудь видит, что мне не хватает?

Ответы [ 2 ]

4 голосов
/ 23 января 2012

Вы можете воспользоваться семантикой функций, чтобы избежать необходимости break из каждого case:

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]
3 голосов
/ 23 января 2012

Ваш синтаксис выключен. Удалите = через case с. Также вам нужно поставить : после default.

См. здесь , чтобы узнать больше о switch утверждениях.

...