gpt4 book ai didi

javascript - 有没有办法在 JavaScript 中模拟内联 let 表达式?

转载 作者:行者123 更新时间:2023-12-01 16:17:34 25 4
gpt4 key购买 nike

我正在编写一个从函数式语言到 JavaScript 的编译器。因为我的语言是基于表达式的,所以很自然地将它编译成 JavaScript 表达式。问题在于,在编译 let 表达式时,我们需要能够“内联”声明和分配变量。例如:

function foo(x) {
return (let y = x * x; y);
}

显然,这段代码不起作用,因为我们不能在表达式中使用 let。一种解决方案是将所有内容包装在 lambda 中:

function foo(x) {
return (()=>{let y = x*x; return y})();
}

但在某些情况下,这会产生显着的运行时成本。另一种选择是调整编译器以生成语句而不是表达式,但这是一个重要的更改,我宁愿尽可能避免它。

有没有什么方法可以将局部变量作为表达式而不是语句声明并分配给 JavaScript,而不会产生额外的运行时成本?

最佳答案

没有,没有。

您应该考虑使用标准的 lambda 演算技术,其中 let x = … in … 等同于 (x => …)(…)。然后让你的编译器再次通过删除多余的函数表达式,在可能的情况下引入语句。

另一种方法可能是使用 do { let x = …; ... do expressions proposal 中的语法, 允许您使用 their transpiler plugin用于生成无功能代码。

关于javascript - 有没有办法在 JavaScript 中模拟内联 let 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62140219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com