
- 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 建構函式可用於在執行時定義函式,但應謹慎使用,因為它可能導致程式碼漏洞。