使用条件中的函数

时间:2016-10-02 03:38:18

标签: javascript function conditional

我一直在做Euler项目的原因。有一次,我发现自己想要将一个值与一个函数的结果进行比较。我已经选择了一个不同的解决方案,但这让我很好奇。这怎么样?如果我要这样做:

//javascript
if x == mathyFunction(10){
  //do this
}

function mathyFunction(y){
  if(y>0){
    mathyFunction(y-1);
    return y;
  } else {
    return y;
  }
}

我知道这不是尾递归或任何花哨的东西,我大多只是好奇逻辑如何在这背后起作用。

计算机将如何解释它?如果其中任何一个值为true,它是会返回== x还是仅在所有值== x时才返回true。实验让我猜测,虽然我会继续挖掘。

1 个答案:

答案 0 :(得分:1)

您没有指定您要询问的语言,但假设return语句的通常语义,函数不能多次返回。因此,如果通过"单独返回所有值",您的意思是这样的:

function f() {
  return 1;
  return 2;
  ...
}

然后,第一个return之后的所有内容都只是死代码,就像return 1是那里唯一的return语句一样。函数调用只有一个值,并且该值是您要比较的值。

如果您的意思是mathyFunction返回列表或其他集合对象,其中包含xy之间的值,则x将与该列表进行比较。同样,语义将取决于语言,但在大多数语言中,将数字与列表进行比较将是类型错误或只是false

如果单独返回值,则指的是yield语句(如C#' s yield return或Python yield),则函数的结果将转到是某种迭代器对象,与前一段中的内容相同。