2011-01-31 4 views
-3
if ((prmotionCode != 'FSSAVE') || (promotionCode != 'ISSAVE') && (promotioCode == 'SOSAVE')) 
+9

Для начала вы дважды набрали «продвижение». – Moses

+0

Что вы пытаетесь сделать? Каков ожидаемый результат? У вас есть синтаксические ошибки? Нам нужна дополнительная информация, чтобы помочь вам =) – Ian

+2

Ответ: В этом нет ничего плохого. Я уверен, что все три переменные должным образом оцениваются (не определены в двух из трех случаев). Либо это, либо вам не хватает шести или семи круглых скобок. – Stephen

ответ

12

Вы пишете promotionCode неправильный 2 из 3 раз.

Редактировать: используя отладчик Javascript, например Firebug, вы сможете отслеживать свой код и лучше понимать, где происходит эта проблема и что это такое. Вы также можете попробовать IDE с поддержкой Javascript, так как может сможет обнаружить такие проблемы.

+1

первый: отсутствует 'o'. второй: хорошо. 3-й: отсутствует 'n'. Довольно плохо ... –

+3

ничего себе - +8, это легкие деньги! – jAndy

+2

Спасибо, я просто учился, похоже, у меня долгий путь! – xander

1

Вы пропустили o в первом prmotioncode ??

+0

Спасибо за помощь. – xander

2

Вы ошибочно написали 'prmotionCode' в первой и третьей частях if. Кроме того, для ответа на вопрос недостаточно информации.

2
(promotioCode == 'SOSAVE') 

Должно быть

(promotionCode == 'SOSAVE') 

Вы можете предоставить дополнительную информацию в будущем.

Это последнее условие, если заявление

EDIT

Ой, подождите, вы видите это неправильно дважды.

1

Возможно, вам нужны два & &. Третьей переменной должен быть promotionCode. «N» отсутствует

+0

Спасибо за помощь. – xander

2

Вы не используете круглые скобки между использованиями || и & &, что делает вашу цель неясной (не обязательно, но сильно неудобной).

+0

Почему бы и нет? лучше, чем не быть на 100% уверенным в приоритете ... –

+2

На самом деле тестирование '(x! = 'foo')' и '(x == 'bar')' бессмысленно. Если 'x' является' bar', то нет точного тестирования, если это не 'foo'! –

+0

Спасибо за помощь. – xander

0

Знаете ли вы свой operator precedence в javascript от самого сердца?

Если нет, то вы должны всегда помещать круглые скобки вокруг выражений с несколькими тестами, чтобы дать понять себе и поддерживающему код, какой приоритет вы ожидали.

Вы: do Знаете ли вы, что && крепче связывает ||?

2

Прежде всего, у вас, похоже, есть проблемы с написанием «продвижения по службе».

Но, кстати, на самом деле это не логично. Если promotionCode = «SOSAVE», то по определению он не равен какой-либо другой вещи. Не было бы оснований проверять, чтобы код равнялся одной вещи, одновременно не сравнивая другую вещь; это избыточно.

Предположительно, вам нужно сообщить нам, что вы на самом деле пытаетесь сделать здесь.

1

Если опечатки появились только в вашем сообщении SO, то, вероятно, вы спрашиваете о логической логике - есть проблема precedence.Ваша логика сводится к 4 комплектами:

  1. FSSAVE
  2. ISSAVE
  3. SOSAVE
  4. {все другие}

Трудно точно сказать, что именно вы хотите, чтобы произвести, но ваша логика говорит: если он относится к SOSAVE (включите # 3) или он не находится в наборе FSSAVE (исключить # 1), тогда сделайте что-то ..., которое сводится к: если в # 2, # 3, # 4 - сделайте что-нибудь , который (снова) сводится к: если NOT в # 1 - do что нибудь. Предложение ISSAVE игнорируется из-за приоритета оператора.

Ваша линия может быть переписано как:

//Using pc as prmotionCode/promotionCode/promotioCode 
if (pc!='FSSAVE') { 
    //Do something 
} 
1

даже если нет опечаток, условие может быть уменьшена

if(promotionCode != 'FSSAVE') 

Что точка дружок?

0

Очевидные ошибки и сарказм в стороне, вот небольшая помощь в кодировании. Попробуйте использовать switch вместо if блока:

switch (promotionCode) { 
    case 'FSSAVE': 
     // code for FSSAVE here. 
     break; 
    case 'ISSAVE': 
     // code for ISSAVE here. 
     break; 
    case 'SOSAVE': 
     // code for SOSAVE here. 
     break; 
    default: 
     // code for none of the above here. 
     break; 
} 

Это позволит вам добавить больше условий в будущем. без изменения вашего кода. Все, что вам нужно сделать, это добавить еще несколько случаев. Кстати, это будет оценено немного быстрее таким образом, так как переменная promotionCode оценивается только один раз.

P.S. Кроме того, вы должны попробовать только заклинание promotionCode один раз. Меньше предела для ошибки. (извините, не смог удержаться! счастливое кодирование!)

Смежные вопросы