JS匿名函數(shù)和匿名自執(zhí)行函數(shù)概念與用法分析
本文實(shí)例講述了JS匿名函數(shù)和匿名自執(zhí)行函數(shù)概念與用法。分享給大家供大家參考,具體如下:
1. 匿名函數(shù)的常見場(chǎng)景
js中的匿名函數(shù)是一種很常見的函數(shù)類型,比較常見的場(chǎng)景:
<input type="button" value="點(diǎn)擊" id="btn">
<script type="text/javascript">
//匿名函數(shù)的第一種情形
var btn=document.querySelector("#btn");
btn.onclick=function(){
// alert("aaaaa");
}
//匿名函數(shù)的第二種情形
setInterval(function(){
// alert("bbbbb");
}, 1000);
//匿名函數(shù)的第三種情形
var fun=function(){
alert("ccccc");
}
// fun();
//匿名函數(shù)的第四種情形
var obj={
name:"dddd",
say:function(){
alert(this.name);
}
}
obj.say();
</script>
上面展示的就是常見的匿名函數(shù)的使用場(chǎng)景。(注意:querySelector是H5中新增的查找dom元素的方法)
2. 匿名自執(zhí)行函數(shù)
見名思義,匿名自執(zhí)行函數(shù)首先是一個(gè)匿名函數(shù),但是這個(gè)函數(shù)是可以自己自動(dòng)執(zhí)行的,不需要借助其他的元素。
<input type="button" value="點(diǎn)擊" id="btn">
<script type="text/javascript">
//1,匿名函數(shù)的第一種實(shí)現(xiàn)方式
(function(data){
// alert(data);
})("eee");
//2.匿名自執(zhí)行函數(shù)的第二種實(shí)現(xiàn)方式
(function(){
// alert("fff");
}());
//3.匿名自執(zhí)行函數(shù)的第三種實(shí)現(xiàn)方式
!function(data){
// alert(data);
}("hhh");
//4.匿名自執(zhí)行函數(shù)的第四種實(shí)現(xiàn)方式
var fun=function(data){
alert(data);
}("iii");
從上面的代碼塊中我們可以總結(jié)出實(shí)現(xiàn)匿名自執(zhí)行函數(shù)的方法一般有四種。
3. 匿名自執(zhí)行函數(shù)的作用
①. 匿名自執(zhí)行函數(shù)最常見的作用是用于實(shí)現(xiàn)閉包的情況中。關(guān)于閉包的概念我會(huì)在后面的文章中詳細(xì)介紹。這里簡(jiǎn)單說(shuō)明一下閉包。閉包:閉包是js的一種特性,我們可以通過(guò)閉包實(shí)現(xiàn)函數(shù)內(nèi)外部的連接,并且可以使得函數(shù)的局部變量始終存在于內(nèi)存中。
②. 匿名自執(zhí)行函數(shù)還可以用于在js中模擬創(chuàng)建塊級(jí)作用域,即如果使用匿名自執(zhí)行函數(shù)將某些代碼包裹起來(lái)可以實(shí)現(xiàn)塊級(jí)作用域的效果,減少全局變量的數(shù)量,在匿名自執(zhí)行函數(shù)執(zhí)行結(jié)束后變量就會(huì)被內(nèi)存釋放掉,從而也會(huì)節(jié)省了內(nèi)存。
4. 匿名函數(shù)和匿名自執(zhí)行函數(shù)總結(jié)
匿名函數(shù)可以簡(jiǎn)單理解為沒(méi)有名字的函數(shù),常見的場(chǎng)景一共就有4種。
匿名自執(zhí)行函數(shù)可以簡(jiǎn)單理解為可以自己執(zhí)行的匿名函數(shù),實(shí)現(xiàn)匿名自執(zhí)行函數(shù)的方式一共有4種。
匿名自執(zhí)行函數(shù)的作用就是用于閉包和創(chuàng)建獨(dú)立的命名空間兩個(gè)方面。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
js創(chuàng)建數(shù)組的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇JS創(chuàng)建數(shù)組的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
重學(xué) JS:為啥 await 不能用在 forEach 中詳解
這篇文章主要介紹了重學(xué) JS:為啥 await 不能用在 forEach 中,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
JavaScript如何動(dòng)態(tài)創(chuàng)建table表格
這篇文章主要介紹了JavaScript如何動(dòng)態(tài)創(chuàng)建table表格,一些時(shí)候需要?jiǎng)討B(tài)的創(chuàng)建和刪除表格,接下來(lái)的文章中將為大家介紹下javascript是如何做到的,感興趣的朋友不要錯(cuò)過(guò)2015-11-11
JS數(shù)組合并push與concat區(qū)別分析
這篇文章主要介紹了JS數(shù)組合并push與concat區(qū)別,結(jié)合實(shí)例形式分析了JavaScript中針對(duì)數(shù)組合并操作使用push與concat的區(qū)別,需要的朋友可以參考下2015-12-12
理解?JavaScript?對(duì)象屬性訪問(wèn)的復(fù)雜性(示例代碼)
在?JavaScript?編程中,開發(fā)者經(jīng)常需要對(duì)對(duì)象的屬性進(jìn)行訪問(wèn),然而,訪問(wèn)方式的不同可能導(dǎo)致代碼行為的差異,尤其在動(dòng)態(tài)屬性的處理中,本文介紹JavaScript對(duì)象屬性訪問(wèn)的復(fù)雜性,感興趣的朋友跟隨小編一起看看吧2024-12-12
Js 獲取HTML DOM節(jié)點(diǎn)元素的方法小結(jié)
在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁(yè)面中某個(gè)元素,然后更新該元素的樣式、內(nèi)容等。2009-04-04

