ECMAScript中的函式

2022-05-18 05:13:18 字數 1562 閱讀 6583

有 3 種定義函式的方式

函式宣告

function關鍵字後需要指定函式名

function sum(num1, num2)  // 不加分號

console.log(sum(2, 3)); // 5

函式表示式

function關鍵字後不用指定函式名;函式末尾需要新增乙個分號,就像宣告其他變數時一樣

var sum = function (num1, num2) ; // 加分號

console.log(sum(2, 3)); // 5

function 建構函式

function建構函式可以接收任意數量的引數,但最後乙個引數始終都被看成是函式體,而前面的引數則列舉出了新函式的引數。

var sum = new function('num1', 'num2', 'return num1 + num2'); // 不推薦

console.log(sum(2, 3)); // 5

函式宣告與函式表示式

函式宣告 與 函式表示式 是有區別的。執行**時,解析器會率先讀取函式宣告,並使其在執行任何**之前可用(可以訪問);至於函式表示式,則必須等到解析器執行到它所在的**行,才會真正被解釋執行。

同時說明:函式宣告會被提公升;函式宣告要早於變數宣告被解析器讀取

// 函式宣告提公升

console.log(sum(2, 3)); // 5 (函式宣告被提公升到源**樹頂部)

function sum(sum1, sum2)

如果把上面的函式宣告改為等價的函式表示式,執行將報錯:

console.log(sum(2, 3)); // typeerror: sum is not a function

var sum = function (sum1, sum2)

關於ecmascript中的函式
function sum(num1, num2) 

console.log(sum(2, 3)); // 5

var anothersum = sum; // 使用 不帶圓括號 的函式名是訪問函式指標,而非呼叫函式

console.log(anothersum(2, 3)); // 5

// 以下為關鍵**

sum = null;

console.log(anothersum(2, 3)); // 5

可以結合以下例子理解

var obj1 = new object();

var obj2 = obj1;

obj1.name = 'nicholas';

console.log(obj2.name); // nicholas

obj1 = null;

console.log(obj2.name); // nicholas

ECMAScript中的箭頭函式

ecmascript中的箭頭函式 ecmascript6中允許使用箭頭 表示函式,使用箭頭函式使得 更加簡潔,使用箭頭函式時,函式體內的this物件,就是定義時所在的物件,而不是使用時所在的物件。使得es程式設計時擺脫this作用域問題的困擾,避免多次使用bind this 繫結this的作用域。箭...

ECMAScript中函式function型別

說起來ecmascript中上面最有意思,我想那莫過於函式了,有意思的根源,則在於函式實際上是物件。每個函式都是function型別的例項,而且都與其他引用型別一樣具有屬性和方法。由於函式是物件,因此函式名實際上也是乙個指向函式物件的指標,不會與某個函式繫結。函式通常是使用函式宣告語法定義的,如下例...

ECMAScript6中的箭頭函式

在2015年新出的ecmascript6中,其中的函式部分,有了乙個這樣的東西 箭頭函式 大概對它解釋一下,其中,左邊的括號是函式的形式引數,右邊的花括號是函式體。接下來,我們聊一聊如何使用這個箭頭函式 1.一般情況 var func1 var func2 function 其中,func1和fun...