Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript递归练习:意外标记else_Javascript_Syntax Error - Fatal编程技术网

JavaScript递归练习:意外标记else

JavaScript递归练习:意外标记else,javascript,syntax-error,Javascript,Syntax Error,我在其他主要要求用户删除分号的线程上读到过这个错误。这似乎对我的代码没有影响 function isEven(number){ if (number > 1) return isEven(number-2); else if (number == 1) return false; else if (number == 0) return true; else if (number < 0) number *= -1 return isEven(number); e

我在其他主要要求用户删除分号的线程上读到过这个错误。这似乎对我的代码没有影响

function isEven(number){
if (number > 1)
  return isEven(number-2);
else if (number == 1)
  return false;
else if (number == 0)
  return true;
else if (number < 0)
  number *= -1
  return isEven(number);
else
  return "Error";
}
函数isEven(数字){
如果(数字>1)
返回isEven(编号2);
else if(数字==1)
返回false;
else if(数字==0)
返回true;
否则如果(数字<0)
数字*=-1
返回isEven(编号);
其他的
返回“错误”;
}
这一行[number*=-1]似乎是导致错误的原因,就像我删除它一样。代码运行时没有错误,除了堆栈内存不足的负数。我想做的是让所有的数字都是正数。 有人愿意帮我吗

解决方案

function isEven(number){
  if (number < 0){
    number *= -1
    return isEven(number);}
  else if (number > 1){
    return isEven(number-2);}
  else if (number == 1){
    return false;}
  else if (number == 0){
    return true;}
  else
    return "Error";
}
函数isEven(数字){
如果(数字<0){
数字*=-1
返回isEven(数字);}
否则,如果(编号>1){
返回isEven(数字2);}
else if(数字==1){
返回false;}
else if(数字==0){
返回true;}
其他的
返回“错误”;
}

简短回答:用
{}

if (){
 ..
 ..
}else {
 ..
 ..
}
function isEven(number){
if (number > 1){
  return isEven(number-2);
}
else if (number == 1){
  return false;
}
else if (number == 0){
  return true;
}
else if (number < 0){
  number *= -1
  return isEven(number);
}
else{
  return "Error";
}
}
长答覆:

else if (number < 0)
  number *= -1
  return isEven(number);

注意:不仅要避免这个特定的错误,而且要避免许多其他奇怪的事情,总是尝试使用{}。这使每个人的生活都变得轻松。

问题在于没有大括号
{}

最好在每个if和else语句中添加
{}
(花括号)
函数isEven(数字){
如果(数字>1){
返回isEven(编号-2);
}else if(数字==1){
返回false;
}else if(数字==0){
返回true;
}否则如果(数字<0){
数字*=-1
返回isEven(编号);
}否则{
返回“错误”;
}
}

log(isEven(-2))
问题是,如果没有用大括号括起来,您试图在第三个else中执行两行代码。 默认情况下,如果不将块用大括号括起来,则只执行一行

function isEven(number){
  if (number > 1){
    return isEven(number-2);
  }
  else if (number == 1){
    return false;
  }
  else if (number == 0){
    return true;
  }
  else if (number < 0){
    number *= -1;
    return isEven(number);
  }
  else{
    return "Error";
  }
}
函数isEven(数字){
如果(数字>1){
返回isEven(编号2);
}
else if(数字==1){
返回false;
}
else if(数字==0){
返回true;
}
否则如果(数字<0){
数字*=-1;
返回isEven(编号);
}
否则{
返回“错误”;
}
}

您需要将代码放在if/else内
{}
括号内。只有当正文是一行代码时,才可以省略它们。看:谢谢你,结果很好!非常感谢。如果其他人需要此信息,请在上面发布功能代码