if ((prmotionCode != 'FSSAVE') || (promotionCode != 'ISSAVE') && (promotioCode == 'SOSAVE'))
答案 0 :(得分:12)
你拼错了promotionCode
错误2次中有3次。
编辑:使用像Firebug这样的Javascript调试器可以让您跟踪代码并更好地了解问题发生的位置和内容。您可能还想尝试使用Javascript支持的IDE,因为可能能够检测到此类问题。
答案 1 :(得分:2)
你在if的第一和第三部分错误拼写了'prmotionCode'。 除此之外,没有足够的信息来回答这个问题。
答案 2 :(得分:2)
(promotioCode == 'SOSAVE')
应该是
(promotionCode == 'SOSAVE')
您可能希望将来提供更多信息。
这是if语句中的最后一个条件
修改强>
等等,你拼错了两次。答案 3 :(得分:2)
在||的使用之间不使用括号和&&,使你的目的不明确(没有必要,但强烈反对..)
答案 4 :(得分:2)
首先,您似乎在拼写“促销”时遇到了一些问题。
但更重要的是,它确实没有逻辑意义。如果promotionCode =“SOSAVE”,那么根据定义,它不等于任何其他东西。没有理由测试代码是否等于一个东西,同时又不等于另一个东西;这是多余的。
据推测,你需要告诉我们你在这里想要做什么。
答案 5 :(得分:1)
你错过了第一个prmotioncode中的o?
答案 6 :(得分:1)
你可能想要两个&&amp ;.第三个变量应该是promotionCode。 'n'缺失
答案 7 :(得分:1)
如果拼写错误刚出现在您的SO帖子中,那么可能是您在询问布尔逻辑 - 问题是precedence。你的逻辑归结为4套:
很难确切地说出你想要什么,生产,但你的逻辑说:如果它属于SOSAVE
(包括#3)或它不在集FSSAVE
(排除#1)然后做一些事情...归结为:如果在#2,#3,#4 - 做某事,这(再次)归结为:如果不在#1 - 做某事。由于运算符优先级,忽略ISSAVE
子句。
您的专栏可以重写为:
//Using pc as prmotionCode/promotionCode/promotioCode
if (pc!='FSSAVE') {
//Do something
}
答案 8 :(得分:1)
即使没有拼写错误,也可以将条件减少为
if(promotionCode != 'FSSAVE')
什么是重点?
答案 9 :(得分:0)
您是否真的知道javascript中的operator precedence?
如果没有,那么你必须总是在带有多个测试的表达式周围放置括号,以使自己和代码维护者清楚地知道你期望的优先级。
你做知道&&
比||
更紧密吗?
答案 10 :(得分: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
一次。误差较小。 (对不起,忍不住!快乐的编码!)