中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

js中匿名函數(shù)的創(chuàng)建與調(diào)用方法
來源:易賢網(wǎng) 閱讀:1165 次 日期:2014-12-19 14:09:21
溫馨提示:易賢網(wǎng)小編為您整理了“js中匿名函數(shù)的創(chuàng)建與調(diào)用方法”,方便廣大網(wǎng)友查閱!

 function 函數(shù)名(參數(shù)列表){函數(shù)體;}

  如果是創(chuàng)建匿名函數(shù),那就應(yīng)該是:

  function(){函數(shù)體;}

  因?yàn)槭悄涿瘮?shù),所以一般也不會(huì)有參數(shù)傳給他。

  為什么要?jiǎng)?chuàng)建匿名函數(shù)呢?在什么情況下會(huì)使用到匿名函數(shù)。匿名函數(shù)主要有兩種常用的場景,一是回調(diào)函數(shù),二是直接執(zhí)行函數(shù)。

  回調(diào)函數(shù),像ajax的異步操作,就需要回調(diào)函數(shù)。這里就不詳解。關(guān)于直接執(zhí)行函數(shù),我看一個(gè)例子就明白了:

代碼如下:

<script language="javascript">

var a = "a";

(function(){

var a="b";

alert(a);

})();

alert(a);

</script>

  在上面這段代碼中,會(huì)順序輸出兩個(gè)alert框。第一個(gè)alert框內(nèi)容為b,第二個(gè)為a。大家看到什么好處了嗎?對的,使用函數(shù)直接執(zhí)行可以限定變量的作用域,使不同腳本的相同變量可以得以共存。

  下面,我們先初步了解一下和匿名函數(shù)相關(guān)的概念。

  函數(shù)聲明(function 語句),要使用一個(gè)函數(shù),我們就得首先聲明它的存在。而我們最常用的方式就是使用function 語句來定義一個(gè)函數(shù),如:

代碼如下:

function abc(){

// code to process

}

function abc(){ // code to process }

  當(dāng)然,你的函數(shù)也可以是帶參數(shù)的,甚至是帶返回值的。

代碼如下:

view plaincopy to clipboardprint?

function abc(x,y){

return x+y;

}

function abc(x,y){ return x+y; }

  但是,無論你怎么去定義你的函數(shù),JS 解釋器都會(huì)把它翻譯成一個(gè)Function 對象。例如,你在定義上面的其中一個(gè)例子的函數(shù)號,再輸入如下代碼:

  alert(typeof abc);// "function"

  你的瀏覽器就會(huì)彈出提示框,提示你abc 是一個(gè)Function 對象。那么Function 對象究竟是什么呢?

  Function 對象

  Function 對象是JavaScript 里面的固有對象,所有的函數(shù)實(shí)際上都是一個(gè)Function 對象。關(guān)于這個(gè)方面的討論,我們留到下一個(gè)專題節(jié)。我們先看看,F(xiàn)unction 對象能不能直接運(yùn)用構(gòu)造函數(shù)創(chuàng)建一個(gè)新的函數(shù)呢?答案是肯定的。例如:

代碼如下:

var abc = new Function("x","y","return x*y;");

alert(abc(2,3)); // "6"

  相信大家現(xiàn)在對如何聲明一個(gè)函數(shù)應(yīng)該是有所了解了。那么什么才是匿名函數(shù)呢?

  聲明匿名函數(shù)

  顧名思義,匿名函數(shù)就是沒有實(shí)際名字的函數(shù)。例如,我們把上面的例子中,函數(shù)的名字去掉,再判斷一下他是不是一個(gè)函數(shù):

代碼如下:

alert(typeof function(){});// "function"

alert(typeof function(x,y){return x+y;});// "function"

alert(typeof new Function("x","y","return x*y;"))// "function"

alert(typeof function(){});// "function"

alert(typeof function(x,y){return x+y;});// "function"

alert(typeof new Function("x","y","return x*y;"))// "function"

  我們可以很容易地看到,它們?nèi)际荈unction 對象,換言之,他們都是函數(shù),但是他們都有一個(gè)特點(diǎn)—— 沒有名字。所以我們把他們稱作“ 匿名函數(shù)” 。然而,正因?yàn)樗麄儧]有“ 名字” ,我們也沒有辦法找到他們。這就引申了如何去調(diào)用一個(gè)匿名函數(shù)的問題了。

  匿名函數(shù)的調(diào)用

  要調(diào)用一個(gè)函數(shù),我們必須要有方法定位它,引用它。所以,我們會(huì)需要幫它找一個(gè)名字。例如:

代碼如下:

var abc=function(x,y){

return x+y;

}

alert(abc(2,3)); // "5"

  上面的操作其實(shí)就等于換個(gè)方式去定義函數(shù),這種用法是我們比較頻繁遇到的。例如我們在設(shè)定一個(gè)DOM 元素事件處理函數(shù)的時(shí)候,我們通常都不會(huì)為他們定名字,而是賦予它的對應(yīng)事件引用一個(gè)匿名函數(shù)。

  對匿名函數(shù)的調(diào)用其實(shí)還有一種做法,也就是我們看到的jQuery 片段—— 使用() 將匿名函數(shù)括起來,然后后面再加一對小括號(包含參數(shù)列表)。我們再看一下以下例子:

代碼如下:

alert((function(x,y){return x+y;})(2,3));// "5"

alert((new Function("x","y","return x*y;"))(2,3));// "6"

  很多人或許會(huì)奇怪,為什么這種方法能成功調(diào)用呢?覺得這個(gè)應(yīng)用奇怪的人就看一下我以下這段解釋吧。

  大家知道小括號的作用嗎?小括號能把我們的表達(dá)式組合分塊,并且每一塊,也就是每一對小括號,都有一個(gè)返回值。這個(gè)返回值實(shí)際上也就是小括號中表達(dá)式的返回值。所以,當(dāng)我們用一對小括號把匿名函數(shù)括起來的時(shí)候,實(shí)際上小括號對返回的,就是一個(gè)匿名函數(shù)的Function 對象。因此,小括號對加上匿名函數(shù)就如同有名字的函數(shù)般被我們?nèi)〉盟囊梦恢昧?。所以如果在這個(gè)引用變量后面再加上參數(shù)列表,就會(huì)實(shí)現(xiàn)普通函數(shù)的調(diào)用形式。

  不知道以上的文字表述大家能不能看明白,如果還是理解不了的話,再看一下以下的代碼試試吧。

代碼如下:

var abc=function(x,y){return x+y;};// 把匿名函數(shù)對象賦給abc

// abc 的constructor 就和匿名函數(shù)的constructor 一樣了。也就是說,兩個(gè)函數(shù)的實(shí)現(xiàn)是一樣的。

alert((abc).constructor==(function(x,y){return x+y;}).constructor);

  PS :constructor 是指創(chuàng)建對象的函數(shù)。也就是函數(shù)對象所代表的函數(shù)體。

  總之,將其(被小括號包含的匿名函數(shù))理解為括號表達(dá)式返回的函數(shù)對象,然后就可以對這個(gè)函數(shù)對象作正常的參數(shù)列表調(diào)用了。(前面這里犯了個(gè)錯(cuò)誤,只有函數(shù)表達(dá)式還是不能直接調(diào)用函數(shù)的,去掉匿名函數(shù)括號必須要伴隨將表達(dá)式賦值。也就是(function(){alert(1)})() 應(yīng)該是與 a=function(){alert(1)}() 等價(jià),不能連a= 都去掉。)

  閉包

  閉包是什么?閉包是指某種程序語言中的代碼塊允許一級函數(shù)存在并且在一級函數(shù)中所定義的自由變量能不被釋放,直到一級函數(shù)被釋放前,一級函數(shù)外也能應(yīng)用這些未釋放的自由變量。

  怎樣?看得一頭冒汗吧…… 沒事,我也是(雖然是我是了解的,只是表達(dá)能力的問題)。讓我們換個(gè)更加簡單的方法說明:閉包,其實(shí)是一種語言特性,它是指的是程序設(shè)計(jì)語言中,允許將函數(shù)看作對象,然后能像在對象中的操作般在函數(shù)中定義實(shí)例(局部)變量,而這些變量能在函數(shù)中保存到函數(shù)的實(shí)例對象銷毀為止,其它代碼塊能通過某種方式獲取這些實(shí)例(局部)變量的值并進(jìn)行應(yīng)用擴(kuò)展。

  不知道這么再解釋后會(huì)否更加清晰,如果還是不明白,那么我們再簡化一下:閉包,其實(shí)就是指程序語言中能讓代碼調(diào)用已運(yùn)行的函數(shù)中所定義的局部變量。

  現(xiàn)在我們看一個(gè)例子:

代碼如下:

var abc=function(y){

var x=y;// 這個(gè)是局部變量

return function(){

alert(x++);// 就是這里調(diào)用了閉包特性中的一級函數(shù)局部變量的x ,并對它進(jìn)行操作

alert(y--);// 引用的參數(shù)變量也是自由變量

}}(5);// 初始化

abc();// "5" "5"

abc();// "6" "4"

abc();// "7" "3"

alert(x);// 報(bào)錯(cuò)!“x” 未定義!

  看到這里,你能判斷究竟jQuery 的那個(gè)代碼片段是否閉包了嗎?

  以我的理解來說吧。是否應(yīng)用了閉包特性,必須確定該段代碼有沒有最重要的要素:未銷毀的局部變量。那么很顯然,沒有任何實(shí)現(xiàn)的匿名函數(shù)不可能應(yīng)用了閉包特性。但如果匿名函數(shù)里面有實(shí)現(xiàn)呢?那也還得確定它的實(shí)現(xiàn)中有沒有 用到那些未銷毀的局部變量。所以如果問你那個(gè)開篇中的jQuery 代碼片段是應(yīng)用了JS 里的什么特性?那么它只是匿名函數(shù)與匿名函數(shù)的調(diào)用而已。但是,它 隱含了閉包的特性,并且隨時(shí)可以實(shí)現(xiàn)閉包應(yīng)用。

  最常見的用法:

代碼如下:

(function() {

alert('water');

})();

  當(dāng)然也可以帶參數(shù):

代碼如下

(function(o) {

alert(o);

})('water');

  想用匿名函數(shù)的鏈?zhǔn)秸{(diào)用?很簡單:

代碼如下:

(function(o) {

alert(o);

return arguments.callee;

})('water')('down');

  常見的匿名函數(shù)都知道了,看看不常見的:

代碼如下:

~(function(){

alert('water');

})();//寫法有點(diǎn)酷~

void function(){

alert('water');

}();//據(jù)說效率最高~

+function(){

alert('water');

}();

-function(){

alert('water');

}();

~function(){

alert('water');

}();

!function(){

alert('water');

}();

(function(){

alert('water');

}());//有點(diǎn)強(qiáng)制執(zhí)行的味道~

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:js中匿名函數(shù)的創(chuàng)建與調(diào)用方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲一区在线观看免费观看电影高清| 国产一区二区三区日韩欧美| 日韩一级在线观看| 亚洲国产日韩欧美| 一区二区三区回区在观看免费视频| 99精品国产福利在线观看免费| 亚洲综合好骚| 麻豆av一区二区三区| 欧美日韩国内| 国产日韩久久| 亚洲区国产区| 久久成人羞羞网站| 欧美日韩高清在线观看| 欧美黄色网络| 狠狠色伊人亚洲综合网站色| 一区二区电影免费在线观看| 久久一区二区三区国产精品 | 久久亚洲图片| 欧美日韩免费观看一区=区三区| 国产日韩欧美a| 9l国产精品久久久久麻豆| 久久精品欧洲| 久久久精品久久久久| 欧美午夜精品久久久久免费视 | 亚洲欧美日韩一区二区三区在线| 男人的天堂亚洲在线| 国户精品久久久久久久久久久不卡| 一区二区三区鲁丝不卡| 欧美激情女人20p| 亚洲国产精品www| 久久野战av| 尤物视频一区二区| 久久久久国色av免费观看性色| 国产丝袜一区二区| 亚洲午夜高清视频| 欧美激情国产高清| 亚洲人成欧美中文字幕| 欧美成人综合在线| 亚洲日韩第九十九页| 欧美国产成人在线| 亚洲人成在线播放| 欧美日韩国产色站一区二区三区| 亚洲日本电影| 欧美精品久久天天躁 | 久久久久久久一区二区| 国产精品日韩欧美一区二区| 亚洲视频一二三| 国产精品久久久一区二区三区| 亚洲一区久久久| 国产精品视频网| 久久av一区二区三区| 国产主播在线一区| 亚洲欧美国产另类| 国产人成精品一区二区三| 欧美中文字幕视频| 在线日本欧美| 欧美日韩黄视频| 先锋影音国产一区| 在线观看视频一区二区| 欧美承认网站| 一区二区三区四区五区精品| 国产精品视频yy9099| 久久―日本道色综合久久| 91久久精品日日躁夜夜躁欧美 | 亚洲影院免费观看| 国产亚洲毛片| 欧美日韩成人一区二区| 亚洲女同性videos| 亚洲第一综合天堂另类专| 欧美日韩一区二区欧美激情| 性娇小13――14欧美| 亚洲国产一二三| 国产精品jizz在线观看美国| 久久精品首页| 一区二区欧美日韩| 在线观看成人一级片| 国产精品久久综合| 免费成人在线观看视频| 亚洲免费中文字幕| 亚洲激情在线观看| 国产日韩一区二区三区在线播放| 欧美福利视频| 欧美专区在线| 欧美亚洲色图校园春色| 亚洲精品美女久久7777777| 国产精品久久久久久户外露出| 欧美成人在线免费观看| 欧美一区二区三区四区夜夜大片 | 欧美成人嫩草网站| 欧美一区二区日韩一区二区| 日韩一级片网址| 亚洲激情视频网站| 亚洲国产成人精品视频| 国外视频精品毛片| 国产一区二区三区不卡在线观看| 国产精品久久久一本精品| 欧美精品久久久久久久| 欧美激情黄色片| 欧美国产激情二区三区| 老鸭窝毛片一区二区三区| 久久精品视频播放| 欧美怡红院视频| 欧美在线你懂的| 欧美在线关看| 久久精品综合网| 久色婷婷小香蕉久久| 一区二区三区你懂的| 一区二区亚洲精品国产| 欧美日韩另类国产亚洲欧美一级| 国产精品免费观看在线| 欧美成人性网| 久久精品一本久久99精品| 亚洲午夜久久久| 一本久久知道综合久久| 亚洲国产欧美在线人成| 国产午夜一区二区三区| 欧美日韩国产页| 国产精品99久久久久久久久久久久| 亚洲娇小video精品| 国产亚洲欧美色| 国产精品久久久久久久久久三级| 猛男gaygay欧美视频| 蜜桃av噜噜一区| 欧美中文字幕在线视频| 在线亚洲欧美专区二区| 亚洲在线观看免费| 午夜激情一区| 国产日韩一区二区三区| 国产精品福利久久久| 欧美成人a视频| 欧美色播在线播放| 欧美精品三级| 欧美午夜片在线观看| 欧美日韩和欧美的一区二区| 欧美精品激情在线观看| 蜜臀91精品一区二区三区| 噜噜噜在线观看免费视频日韩| 久久久xxx| 久久综合激情| 国语自产精品视频在线看| 影音先锋亚洲视频| 亚洲国产精品一区| 亚洲精品中文字幕在线观看| 韩国av一区二区三区在线观看 | 亚洲免费中文字幕| 日韩视频免费观看高清完整版| 亚洲视频网站在线观看| 午夜性色一区二区三区免费视频 | 麻豆精品网站| 美女网站久久| 国产精品一区免费观看| 国产视频欧美| 在线成人激情视频| 欧美一区激情| 欧美高清在线视频| 欧美精品一级| 先锋a资源在线看亚洲| 精品88久久久久88久久久| 日韩视频第一页| 一区二区三区免费在线观看| 亚洲欧美三级伦理| 校园激情久久| 国产精品不卡在线| 黄色成人精品网站| 99国产一区二区三精品乱码| 亚洲免费影视| 久久久久久久综合| 国产日产精品一区二区三区四区的观看方式 | 亚洲伦理精品| 亚洲一区二区三区成人在线视频精品| 午夜精品久久久久久99热| 久久久久国产精品一区三寸| 欧美噜噜久久久xxx| 亚洲精品一区二区三区在线观看| 亚洲免费在线观看视频| 欧美激情第二页| 国产在线拍偷自揄拍精品| 99精品国产高清一区二区| 久久成人国产| 欧美三级日本三级少妇99| 国产欧美在线| 欧美理论大片| 亚洲视频一二| 136国产福利精品导航网址| 久久久久欧美| 亚洲欧美日韩国产一区二区| 亚洲一区综合| 国产精品久久久久91| 影音先锋中文字幕一区二区| 中日韩美女免费视频网站在线观看| 欧美一区二区啪啪| 国产精品福利在线观看| 亚洲国产精品免费| 欧美伦理a级免费电影| 精品88久久久久88久久久| 久久国产精品久久精品国产| 国产精品久久久久7777婷婷| 一区二区电影免费观看| 欧美国产91| 在线日韩欧美视频|