gpt4 book ai didi

javascript - 可以制作确定函数返回类型的正则表达式吗?

转载 作者:行者123 更新时间:2023-12-04 04:56:02 25 4
gpt4 key购买 nike

给定以下函数的文本:

function f3() {
return Math.random() > 0.5 ? Promise.resolve(true): 'naaah'
}

可以编译一个正则表达式来确定 f3()的返回类型吗?调用,而不实际调用函数?

最佳答案

鉴于代码,我们无法通过正则表达式确定 this 的返回类型。矛盾证明:

  • 假设我们可以使用正则表达式找到返回类型。
  • 返回类型在最后一行通过对 random 的非确定性调用确定。 (提前未知)。
  • 正则表达式是确定性的——它们在相同的输入上运行时总是具有相同的输出。
  • 因此,函数的返回类型必须是静态的,因为我们可以运行正则表达式并找到返回类型(并且该正则表达式将始终返回相同的内容)。
  • 矛盾:函数的返回类型必须是静态的,但由于random,函数的返回类型是可变的

  • 注意:以上假设类型必须是单一的,并且不单独考虑联合类型。

    此外,证明为什么我们不能总是这样做。
  • 假设我们可以以某种方式找出函数中使用的每种类型。
  • 在某些时候,我们生成一个字符串 a="A"+Math.random()
  • 稍后,我们生成一个字符串 b="class "+a+"{...}
  • 在这个定义之后,我们执行 c= eval("new "+a+"()") .
  • 当我们回来时c ,没有正则表达式可以知道类型 - 类型是在函数中新命名的,随机确定并且每次执行都不同。

  • 这假设问题是一个更一般的“javascript regex 能否找到泛型函数的返回类型”。请注意,如果可以找到返回类型,则可以判断程序已停止(如果不停止,则无法返回,如果从不停止,则返回类型必须是未定义的),并且停机问题仍未解决。

    关于javascript - 可以制作确定函数返回类型的正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417236/

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