javascript - 如何使用 let 声明作为表达式?

标签 javascript functional-programming expression let

我想使用 let 表达式,但以下代码不起作用:

true ? (let x=1, let y=2, x+y) : (let x=3, let y=4, x-y); // SyntaxError

我该怎么做?

最佳答案

不幸的是,Javascript 缺少 lisp 风格的 let 表达式。但是,由于有默认参数和箭头函数,我们可以模仿它们:

const let_ = f => f();

console.log(
  true ? let_((x = 1, y = 2) => x + y) : let_((x = 3, y = 4) => x - y) // 3
);

说实话,这有点乏味,而且代码也相当冗长。以下递归用例可能更有说服力:

const let_ = f => f();

const fact = n => let_(
  (aux = (n, acc) => n === 1 ? acc : aux(n - 1, acc * n)) => aux(n, 1)
);

console.log(
  fact(5) // 120
);

这是否是惯用的 Javascript 值得怀疑,但这是我第一次在代码中使用默认参数。

关于javascript - 如何使用 let 声明作为表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822109/

相关文章:

java - r 和 g 之间由 5 个字符分隔的字符串! (错误:String index out of range error)

r - 如何检索...的内容作为调用列表?

Java 方程/表达式生成器

javascript - 应仅适用于一个类的样式正在应用于所有内容

javascript - 如何从 Javascript 获取 Payeezy API 响应到 PHP 文件?

javascript - 识别 D3.js 图

javascript - 如何防止从我的网站下载视频,特别是在互联网下载管理器中?

r - 如何在 R 中的 2 个列表的元素之间应用函数?

.net - F# - 不理解函数组合(将获取文件函数转换为获取重复文件函数)

haskell - 在游戏开发中使用函数式编程的好资源?