javascript - 这个函数从哪里获取它的值?

标签 javascript function inline-functions

这是书中的一个例子。如果偶数该函数返回 TRUE,否则返回 FALSE。我不明白它是如何工作的。我的理解是这样的:

  1. 42 绑定(bind)到 n
  2. 创建“偶数”函数
  3. x 绑定(bind)到 n,其中 n = 42
  4. x!= 0
  5. 启动“else”
  6. 创建“奇数”函数
  7. 奇数(42 - 1)
  8. 正在启动“!even(41)”。

JS 对“even(41)”做了什么? TRUE 从哪里来?据我理解,只有当 x === 0 时才应返回 TRUE

document.write(
  ((n) => {
    const even = (x) => {
      if (x === 0) return true;
      else {
        const odd = (y) => !even(y);
        return odd(x - 1);
      }
    }
    return even(n)
  })(42)
)

最佳答案

这是故意造成困惑的。遵循逻辑。

如果 n 不为 0,我们创建一个名为 odd 的新函数,它调用 Even 并反转 Even 的 bool 值。

然后我们用 n-1调用该函数

所以本质上,它就像一个 while 循环,你不断地从数字中减去 1,并在每一步中反转它的真假,直到得到 0。如果该函数被调用偶数次,则它是偶数。如果调用奇数次,则为奇数。

关于javascript - 这个函数从哪里获取它的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38042777/

相关文章:

javascript - 使用选择和文本输入进行 JQuery 验证

javascript - 如何只删除一串javascript中的一个字符

javascript - 使用日语 tategaki 时对齐 block 元素 (p, div) 的最后一行(书写模式 : tb-rl)

c - 如何编写一个函数来永久更改传递的字符串

c - 当函数在不同文件中实现时 ((always_inline)) 不起作用

c++ - 使用内联函数有什么问题?

javascript - 数据表响应式 - 列不可折叠到子行

c - 尝试在 c 中返回 char* 时出错

Javascript - 将参数添加到作为参数传递的函数

sql - Oracle 中的多个内联函数