我一直在做欧拉项目是有原因的。有一次,我发现自己想要将一个值与函数的结果进行比较。此后我选择了不同的解决方案,但这让我很好奇。这将如何运作?如果我要做类似的事情:
//javascript
if x == mathyFunction(10){
//do this
}
function mathyFunction(y){
if(y>0){
mathyFunction(y-1);
return y;
} else {
return y;
}
}
我知道这不是尾递归或任何奇特的东西,我主要只是好奇这背后的逻辑是如何工作的。
计算机会如何解释它?如果任何一个值== x
,它会返回true
,还是仅当所有值== x
时才返回true。实验让我猜测,但我会继续挖掘。
最佳答案
您没有指定您要询问的语言,但假设 return
语句的通常语义,函数不能返回多次。因此,如果“单独返回所有值”,您的意思是这样的:
function f() {
return 1;
return 2;
...
}
那么第一个 return
之后的所有内容都只是死代码,就好像 return 1
是其中唯一的 return
语句一样。函数调用只有一个值,该值就是您要比较的值。
如果您的意思是 mathyFunction
返回一个列表或其他集合对象,其中包含 x
和 y
之间的值,则 x
将与该列表进行比较。同样,语义将取决于语言,但在大多数语言中,将数字与列表进行比较要么是类型错误,要么只是 false
。
如果通过单独返回值来引用yield语句(例如C#的yield return
或Python的yield
),那么函数的结果将是某种迭代器对象,并且与上一段中的内容相同。
关于javascript - 在条件语句中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39813623/