为什么这段代码只有在 isNaN 放在最后时才有效

Why does this code only work when the isNaN is put last?

本文关键字:isNaN 最后 有效 段代码 代码 为什么      更新时间:2023-09-26

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

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

代码一(有效):

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 语句的顺序如何影响代码?

因为它不完整

试试这个:

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;
 }
}

您缺少最后两个"}"。

更正第二个函数,如下所示:

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. 功能结束时结束。

我已经纠正了,它为我工作。

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

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

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

我用 NaN 代替了 isNaN - 它成功完成了!