Skip to content

Home > @zero-dim/utils > convertToExecutableFunction

convertToExecutableFunction() function

将字符串转换为可执行函数

Signature:

typescript
export declare function convertToExecutableFunction(functionString: string): Function;

Parameters

Parameter

Type

Description

functionString

string

包含函数定义的字符串,必须包含 'run(' 并且符合标准的函数语法

**Returns:**

Function

返回一个可执行的函数实例

Exceptions

{Error} 当函数字符串格式不正确时,抛出 'Invalid function string' 错误

Remarks

  • 支持普通函数和异步函数的转换 - 自动识别函数是否为异步函数(通过检查字符串是否以 'async' 开头) - 转换后的函数保持原有的参数和函数体不变 - 使用 new Function 实现,注意相关的安全风险

Example

typescript
// 示例1: 基础函数转换
const fnStr = 'run(a, b) { return a + b; }';
const fn = convertToExecutableFunction(fnStr);
console.log(fn(1, 2)); // 输出: 3

// 示例2: 异步函数转换
const asyncFnStr = 'async run(x) { return await Promise.resolve(x * 2); }';
const asyncFn = convertToExecutableFunction(asyncFnStr);
const result = await asyncFn(5); // 输出: 10

// 示例3: 复杂函数转换
const complexFnStr = `
  run(arr, multiplier) {
    return arr
      .filter(x => x > 0)
      .map(x => x * multiplier);
  }
`;
const complexFn = convertToExecutableFunction(complexFnStr);
console.log(complexFn([1, -2, 3], 2)); // 输出: [2, 6]

// 示例4: 带闭包的函数转换
const closureFnStr = `
  run(x) {
    const helper = (y) => y * 2;
    return helper(x);
  }
`;
const closureFn = convertToExecutableFunction(closureFnStr);
console.log(closureFn(5)); // 输出: 10