- TypeScript 基础
- TypeScript - 首页
- TypeScript - 路线图
- TypeScript - 概述
- TypeScript - 环境搭建
- TypeScript - 基本语法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 变量
- TypeScript - let & const
- TypeScript - 运算符
- TypeScript 基本类型
- TypeScript - 类型
- TypeScript - 类型注解
- TypeScript - 类型推断
- TypeScript - 数字
- TypeScript - 字符串
- TypeScript - 布尔值
- TypeScript - 数组
- TypeScript - 元组
- TypeScript - 枚举
- TypeScript - any
- TypeScript - never
- TypeScript - 联合类型
- TypeScript - 字面量类型
- TypeScript - Symbol
- TypeScript - null vs. undefined
- TypeScript - 类型别名
- TypeScript 控制流
- TypeScript - 决策
- TypeScript - if 语句
- TypeScript - if else 语句
- TypeScript - 嵌套 if 语句
- TypeScript - switch 语句
- TypeScript - 循环
- TypeScript - for 循环
- TypeScript - while 循环
- TypeScript - do while 循环
- TypeScript 函数
- TypeScript - 函数
- TypeScript - 函数类型
- TypeScript - 可选参数
- TypeScript - 默认参数
- TypeScript - 匿名函数
- TypeScript - Function 构造函数
- TypeScript - rest 参数
- TypeScript - 参数解构
- TypeScript - 箭头函数
- TypeScript 接口
- TypeScript - 接口
- TypeScript - 接口扩展
- TypeScript 类和对象
- TypeScript - 类
- TypeScript - 对象
- TypeScript - 访问修饰符
- TypeScript - 只读属性
- TypeScript - 继承
- TypeScript - 静态方法和属性
- TypeScript - 抽象类
- TypeScript - 存取器
- TypeScript - 鸭子类型
- TypeScript 高级类型
- TypeScript - 交叉类型
- TypeScript - 类型守卫
- TypeScript - 类型断言
- TypeScript 类型操作
- TypeScript - 从类型创建类型
- TypeScript - keyof 类型运算符
- TypeScript - typeof 类型运算符
- TypeScript - 索引访问类型
- TypeScript - 条件类型
- TypeScript - 映射类型
- TypeScript - 模板字面量类型
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型约束
- TypeScript - 泛型接口
- TypeScript - 泛型类
- TypeScript 其他
- TypeScript - 三斜杠指令
- TypeScript - 命名空间
- TypeScript - 模块
- TypeScript - 环境声明
- TypeScript - 装饰器
- TypeScript - 类型兼容性
- TypeScript - Date 对象
- TypeScript - 迭代器和生成器
- TypeScript - Mixin
- TypeScript - 实用程序类型
- TypeScript - 装箱和拆箱
- TypeScript - tsconfig.json
- 从 JavaScript 到 TypeScript
- TypeScript 有用资源
- TypeScript - 快速指南
- TypeScript - 有用资源
- TypeScript - 讨论
TypeScript - Function() 构造函数
Function() 构造函数
TypeScript 支持 JavaScript 内置的 Function() 构造函数来定义函数。Function() 构造函数在运行时动态创建函数对象。
您可以使用 Function() 构造函数和 new 运算符动态定义函数。
Function() 构造函数可以接受多个参数。除了最后一个参数外,所有参数都是参数名称,最后一个参数是新创建函数的函数体。
语法
以下是使用 Function 构造函数和 new 运算符定义函数的语法:
let res = new Function(arg1, arg2, ..., functionBody); let res = Function(arg1, arg2, ..., functionBody);
Function() 可以使用或不使用 new 调用。两种语法都将创建一个新的 Function 实例。
所有参数,即 arg1、arg2……functionBody,都是字符串。
参数
arg1、arg2…… - 这些是可选参数,被视为要创建的函数的参数名称。
functionBody - 此参数包含要创建的新函数的函数定义中的语句。
除了最后一个参数外,所有参数都是可选的。最后一个参数是必需的。如果您只传递一个参数,则它将被视为函数体。
请注意,Function() 构造函数不会传递任何指定其创建的函数名称的参数。使用 Function() 构造函数创建的未命名函数称为匿名函数。
new Function() 是对构造函数的调用,它依次创建并返回函数引用。
示例
让我们通过一些 TypeScript 示例程序来了解 Function 构造函数。
示例 1:创建没有参数的简单函数
在下面的示例中,Function() 构造函数只接受单个参数。此参数被视为函数体。
const greet = new Function("return 'Welcome to Tutorials Point!'"); console.log(greet());
编译 TypeScript 将在 JavaScript 中生成相同的代码。
上述示例代码的输出如下:
Welcome to Tutorials Point!
示例 2:创建具有参数的简单函数
在下面的示例中,我们调用 Function() 构造函数,传递三个参数:“x”、“y”和“return x + y”。前两个参数是新函数实例 resFunction 的参数名称。
const resFucntion = new Function("x", "y", "return x + y"); let sum = resFucntion(5, 10); console.log(sum);
编译后,TypeScript 将在 JavaScript 中生成相同的代码。
编译后的 JavaScript 代码将产生以下输出:
15
示例 3:从函数表达式创建函数实例
在下面的示例中,我们使用函数表达式定义一个函数 sum,并将其作为参数(函数体)的一部分传递给 Function() 构造函数。
此函数表达式需要一个包含函数名称的 return 语句。
const add = new Function( "const sum = function (a, b) {return a+ b}; return sum", )(); console.log(add(2,3));
TypeScript 编译器将在 JavaScript 中生成相同的代码。
JavaScript 代码将产生以下输出:
5
示例 4:从函数声明创建函数实例
在下面的示例中,我们将函数声明作为参数传递给 Function 构造函数。函数声明不需要包含函数名称的 return 语句。
const sayHello = new Function( "return function (name) { return `Hello, ${name}` }", )(); console.log(sayHello("Shahid"));
编译后,它将在 JavaScript 中生成相同的代码。
上述示例代码的输出如下:
Hello Shahid
TypeScript 中的 Function 构造函数可用于在执行时定义函数,但应谨慎使用,因为它可能导致代码漏洞。