即使条件验证,其中一个else语句也不会执行

时间:2017-10-30 22:38:58

标签: javascript if-statement

每当我写一个超过6个字母的名字时,它仍会打印

  

这不是一个很长的名字

而不是

  

这是一个很长的名字

我知道这必须是一个基本问题,它可能非常简单,但我无法让它发挥作用。我会很感激为什么它没有按照预期执行的任何想法。

let myName = prompt('What is your name?');

if (myName.length <= 3) {
  document.write('That is such a short name!');
}
else if (3 < myName.length < 6) {
  document.write('That isn\'t a very long name');
}
else if (myName.length >= 6) {
  document.write('That\'s such a long name!');
} 
else {
  document.write('Nop');
}

2 个答案:

答案 0 :(得分:2)

你的一个表达方式并没有按照你的想法做到。

else if (3 < myName.length < 6) {

3 < myName.lengthmyName.length < 6评估为true,因此它们几乎总是被击中。

要检查多个条件,您需要一个“和”运算符,在Javascript中为&&

else if (myName.length > 3 && myName.length < 6) {

注意我们如何翻转表达式,以便myName.length始终是第一个。这样可以更容易朗读

  

如果myName.length大于3且myName.length小于6 ...

答案 1 :(得分:1)

我想补充一点 - 因为你正在使用'else'语句 - 大约一半的条件都是多余的。

例如,您的第一个条件检查字符串的大小是否小于或等于3;这没关系。

然而,只有当长度大于3时,才会测试您的第二个条件,因此您无需再次检查。

以下是您逻辑的简化版本:

let myName = prompt('What is your name?');

if (myName.length <= 3) {
  document.write('That is such a short name!');
}

else if (myName.length < 6) {
  document.write('That isn\'t a very long name');
}

else {
  document.write('That\'s such a long name!');
}