首页 > 解决方案 > 如何在Javascript中正确地将函数转换为字符串?

问题描述

我正在尝试重写Greenlet,一个用于在前端Blob()创建的库。worker thread我尝试使用相同的方法将函数转换为字符串,但该函数的某些部分消失了:

  const workerFile = new Blob([`const fn = ${asyncFn};` + (self.onmessage = (e) => {
    console.log(fn)
  })])

然后它将渲染:

  workerFile.text().then(res => {
    console.log(res)
  })

//Returning the following:
/*const fn = async function sum(a, b) {
  return a + b;
};e => {
    console.log(fn);
  }*/

self.onmessage消失了。如何在不使用的情况下正确地对其进行字符串化function.toString()?为了防止这种情况发生,我需要知道哪些缺少的语法部分?

标签: javascript

解决方案


看起来毫无意义,而且似乎是一个相对不好的做法。如果您已经可以访问服务器来编写此类代码,那么您不妨创建一个 Worker,而无需使用 greenlet。但是,在大多数浏览器String+(functionHere);中会给你一个看起来像函数的字符串。

console.log(''+(()=>{ /* see it works */ }));


推荐阅读