最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

摘要:

本文講解的是javascript最基礎(chǔ)也是最重要的東西--函數(shù),之所以寫這篇文章,是因?yàn)槊嬖嚨臅r(shí)候問到了,也算是溫故而知新了。

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

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

    function f() {return 10;}

    return f();

    function f() {return 20;}

    var f = 30;

})();

console.log(f);

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

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

發(fā)生以上情況就會(huì)導(dǎo)致語法錯(cuò)誤,代碼無法執(zhí)行。

函數(shù)定義

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

1、構(gòu)造函數(shù)

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

2、普通定義

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

3、函數(shù)式定義

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

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

參數(shù)

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

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

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

}

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

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

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

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

復(fù)制代碼 代碼如下:

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ù)

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

}

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

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

function() {}

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

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

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

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

例子:

復(fù)制代碼 代碼如下:

(function(x, y) {

    ​alert(x + y);

})(2,3);

//alert(5)


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

下面就來講講最上面的例子,這個(gè)例子里面涉及到閉包,后面會(huì)說

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

復(fù)制代碼 代碼如下:

var f = (function() {

    ​var f = 30;

    function f() {return 10;}

    function f() {return 20;}

    return f();

})();


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

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • TypeScript泛型的使用詳細(xì)介紹

    TypeScript泛型的使用詳細(xì)介紹

    在TypeScript中,泛型是一種創(chuàng)建可復(fù)用代碼組件的工具。這種組件不只能被一種類型使用,而是能被多種類型復(fù)用。類似于參數(shù)的作用,泛型是一種用以增強(qiáng)類(classes)、類型(types)和接口(interfaces)能力的非常可靠的手段
    2022-09-09
  • 用JS編寫選項(xiàng)卡效果

    用JS編寫選項(xiàng)卡效果

    這篇文章主要為大家詳細(xì)介紹了用JS編寫選項(xiàng)卡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JavaScript 高性能數(shù)組去重的方法

    JavaScript 高性能數(shù)組去重的方法

    這篇文章主要介紹了JavaScript 高性能數(shù)組去重的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • Javascript中的神器——Promise

    Javascript中的神器——Promise

    本文主要介紹了Javascript中Promise的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • 用js實(shí)現(xiàn)用戶注冊(cè)功能

    用js實(shí)現(xiàn)用戶注冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了用js實(shí)現(xiàn)用戶注冊(cè)的簡(jiǎn)潔版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解ES6 中的Object.assign()的用法實(shí)例代碼

    詳解ES6 中的Object.assign()的用法實(shí)例代碼

    這篇文章主要介紹了ES6 Object.assign()的用法及用途,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • js中設(shè)置元素class的三種方法小結(jié)

    js中設(shè)置元素class的三種方法小結(jié)

    列舉所有的方式,看看各瀏覽器的支持差異。方便用js動(dòng)態(tài)設(shè)置元素css的代碼。需要的朋友可以參考下。
    2011-08-08
  • js常見遍歷操作小結(jié)

    js常見遍歷操作小結(jié)

    這篇文章主要介紹了js常見遍歷操作,結(jié)合實(shí)例形式分析了javascript for循環(huán)、for in、for each、each及map遍歷簡(jiǎn)單操作技巧,需要的朋友可以參考下
    2019-06-06
  • JavaScript編寫簡(jiǎn)單的計(jì)算器

    JavaScript編寫簡(jiǎn)單的計(jì)算器

    這篇文章主要介紹了JavaScript如何編寫簡(jiǎn)單的計(jì)算器,功能很簡(jiǎn)單,可以實(shí)現(xiàn)加減乘除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • Webpack5正式發(fā)布,有哪些新特性

    Webpack5正式發(fā)布,有哪些新特性

    這篇文章主要介紹了Webpack5正式發(fā)布,有哪些新特性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論

襄汾县| 博野县| 红原县| 麻栗坡县| 高邮市| 手机| 周至县| 井研县| 陆河县| 清镇市| 潮安县| 锦屏县| 讷河市| 元阳县| 绥棱县| 青铜峡市| 合川市| 平泉县| 石楼县| 南澳县| 龙川县| 徐州市| 潼南县| 保康县| 贵州省| 泰和县| 遂平县| 天柱县| 伊金霍洛旗| 仁化县| 如皋市| 黔东| 连山| 阿克苏市| 阿荣旗| 玉田县| 建宁县| 通河县| 呼图壁县| 灵川县| 晋州市|