为什么此代码仅在isNaN放在最后时才起作用?

时间:2013-11-10 05:53:33

标签: javascript

所以我刚开始使用Codecademy学习JS,当我完成一项任务,要求我编写一个接受输入的函数并评估它是否是偶数。我还需要使用isNaN来确定输入是否为数字。

无论如何,我有两个代码,我认为应该有效但只有一个代码。唯一的区别是语句的顺序。我只是想知道是否有人能告诉我为什么只有一个代码有效?

Code one(works):

isEven = function(number){
if(number%2 === 0){
  return true;
}
else if(number%2 === 1){
  return false;
}
else if(isNaN(number)){
  return('Please enter a number');
}

但是,这个没有:

isEven = function(number){
if(isNaN(number)){
  return('Please enter a number')
}
else if(number%2 === 1){
  return false;
}
else if(number%2 === 0){
  return true;
}

有谁能告诉我if / else if语句的顺序如何影响代码?

4 个答案:

答案 0 :(得分:0)

因为它不完整

试试这个:

isEven = function(number){
  if(isNaN(number)){
return('Please enter a number')
  }else if(number%2 === 1){
  return false;
  }else if(number%2 === 0){
  return true;
 }
}

你错过了最后两个'}'。

答案 1 :(得分:0)

这可能与它有时的isNaN时髦行为有关。例如isNaN('')返回false,即使空字符串不是数字...

isNaN(null)也返回false,即使null不是数字...

答案 2 :(得分:0)

纠正第二个功能如下:

isEven = function(number){
  if(isNaN(number)){
    return('Please enter a number');
  }
  else if(number%2 === 1){
    return false;
  }
  else if(number%2 === 0){
    return true;
  }
}

在第二段代码中,

  1. 你错过了';'在回报结束时('请输入一个数字')
  2. 最后的功能结束。
  3. 我已经纠正并为我工作了。

答案 3 :(得分:0)

isEven = function(number){
  if (number % 2 === 0){
return "string1";
  }else if(NaN(number)){
return("Not a number");
  }else {
return "string3";
  } 
};
isEven(12);

我使用NaN而不是isNaN - 它已成功完成!