欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript匿名函數(shù)實例分析

 更新時間:2014年11月18日 16:12:40   投稿:shichen2014  
這篇文章主要介紹了javascript匿名函數(shù),以實例形式詳細分析了javascript匿名函數(shù)的定義、用法及注意事項,具有很好的學習借鑒價值,需要的朋友可以參考下

本文實例講述了javascript匿名函數(shù)的用法。分享給大家供大家參考。具體分析如下:

摘要:

本文講解的是javascript最基礎也是最重要的東西--函數(shù),之所以寫這篇文章,是因為面試的時候問到了,也算是溫故而知新了。

先上個例子,如果你看懂了,說明你已經(jīng)理解了本文要講的。

復制代碼 代碼如下:
var f = (function() {

    function f() {return 10;}

    return f();

    function f() {return 20;}

    var f = 30;

})();

console.log(f);

javascript高級程序設計中這樣描述函數(shù)--可以封裝任意多條語句,而且可以在任何地方、任何時候調(diào)用執(zhí)行。之前介紹過了strict mode,嚴格模式對函數(shù)有一些限制:

① 不能把函數(shù)命名為eval或arguments
② 不能把參數(shù)命名為eval或arguments
③ 不能出現(xiàn)兩個命名參數(shù)同名的情況

發(fā)生以上情況就會導致語法錯誤,代碼無法執(zhí)行。

函數(shù)定義

函數(shù)定義分為三種

1、構造函數(shù)

復制代碼 代碼如下:
var fun = new Funciton();

2、普通定義

復制代碼 代碼如下:
function fun() {}

3、函數(shù)式定義

復制代碼 代碼如下:
var fun = function() {};

這三種方式都可以定義函數(shù)fun。

參數(shù)

函數(shù)不介意傳遞進來多少個參數(shù),也不在乎傳進來的參數(shù)是什么數(shù)據(jù)類型。即便你定義的函數(shù)只接收兩個參數(shù),在調(diào)用這個函數(shù)時也未必一定要傳遞兩個參數(shù)。可以傳遞一個、三個甚至不傳遞參數(shù)。原因是參數(shù)在內(nèi)部是用一個數(shù)組來表示的。在函數(shù)體內(nèi)可以通過arguments對象來訪問參數(shù)數(shù)組,舉個例子

復制代碼 代碼如下:
function sayHi() {

    alert("Hello " + arguments[0] + "," + arguments[1]);

}

通過訪問arguments對象的length屬性來獲知有多少個參數(shù)。函數(shù)的length會返回函數(shù)的參數(shù)個數(shù)。

注意:所有參數(shù)傳遞的都是值,不可能通過引用傳遞參數(shù)。

函數(shù)不能重載,只能重寫

如果定義了兩個名字相同的函數(shù),則該名字只屬于最后定義的函數(shù),舉個例子:

復制代碼 代碼如下:

function add(num) {

    return num + 100;

}

function add(num) {

    return num + 200;

}

var result = add(100) //300

注意:函數(shù)在執(zhí)行完return語句之后停止并立即退出。

函數(shù)種類

函數(shù)分為兩種一種是有名函數(shù),另一種是匿名函數(shù)。例如下面的有名函數(shù)

復制代碼 代碼如下:
function fun() {

}

如果調(diào)用的話,只需要fun()就可以。

匿名函數(shù),顧名思義就是沒有函數(shù)名。例如

function() {}

函數(shù)調(diào)用是通過函數(shù)名來調(diào)用,匿名函數(shù)怎么調(diào)用呢?一種就是將匿名函數(shù)賦給一個變量,讓這個變量充當函數(shù)名。另一種就是用()來調(diào)用,例如下面三種方法

1、(function() {return;}());

2、(function() {return;})();

3、function() {return;}();

例子:

復制代碼 代碼如下:

(function(x, y) {

    ​alert(x + y);

})(2,3);

//alert(5)


2和3將會作為參數(shù)傳遞給x和y

下面就來講講最上面的例子,這個例子里面涉及到閉包,后面會說

首先定義一個變量f,然后賦值一個匿名函數(shù),這里呢需要注意一點函數(shù)里所有變量的定義都會被前置,所以匿名函數(shù)里的執(zhí)行順序是

復制代碼 代碼如下:

var f = (function() {

    ​var f = 30;

    function f() {return 10;}

    function f() {return 20;}

    return f();

})();


外面的變量f和里面的變量f不在同一個作用域內(nèi)(閉包),所以互不影響。​因為函數(shù)不能重載,所以外面變量f=(function f() {return 20;})();,所以最終輸出的是20。

希望本文所述對大家的javascript程序設計有所幫助。

相關文章

最新評論