gpt4 book ai didi

javascript - TypeScript 箭头函数到字符串更改语法

转载 作者:行者123 更新时间:2023-12-03 06:58:14 26 4
gpt4 key购买 nike

JavaScript 没有问题,它看到一个匿名箭头函数,它是 .toString()方法完全返回。

// This returns as expected
// ie `() => ""`
const t = [() => ""];
console.log(t[0].toString());

此示例使用 Babel,但在 TypeScript 中也是如此。 TypeScript 看到一个匿名箭头函数并尝试创建一个匿名函数语句,如果尝试运行 eval 则该语句无效在上面。

// This returns an incomplete function string
const t = [() => ""]
console.log(t[0].toString());

运行 eval(t[0].toString())将返回错误:
SyntaxError: Function statements require a function name
有没有办法在使用 Babel/TypeScript 时保留正确的语法?还有其他更好的方法来实现这一点吗?

最佳答案

结果字符串是:

function () { return ""; }
这无法正确解析,因为正如您阅读的错误所说:

Function statements require a function name



function () { return ""; }

没有名称,它只能存在于表达式上下文中。这在不使用 Babel 时有效,因为在语法上允许独立箭头函数表达式,但独立无名 function表达式不是。
一种方法是在 eval 时将函数分配给变量。 :

var t = [function() { return "abc"; }]
var result = eval(`var fn = ${t[0].toString()}; fn();`);
console.log('result:', result);

(但您还应该考虑 eval 是否真的有必要 - 在许多情况下,它的使用表明对 XY problem 的不雅 X 解决方案 - 考虑是否有任何方法可以重构脚本以避免 eval 。偶尔, eval 是必需的,但通常不是。)

关于javascript - TypeScript 箭头函数到字符串更改语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64938992/

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