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

廣告