有 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...