摘要:函數(shù)表達(dá)式語法如下函數(shù)體如上所示當(dāng)我們輸出函數(shù)名時(shí)返回了空字符串,因?yàn)殛P(guān)鍵字后面沒有標(biāo)識(shí)符,這種情況下創(chuàng)建的函數(shù)為匿名函數(shù)。接下來我們就談?wù)劺煤瘮?shù)表達(dá)式所創(chuàng)建的匿名函數(shù)有什么應(yīng)用。操作方法聲明匿名函數(shù),立馬調(diào)用。
函數(shù)聲明我們都知道定義函數(shù)的方式有兩種,一種是函數(shù)聲明,另外一種就是函數(shù)表達(dá)式。
語法為:function關(guān)鍵字后跟函數(shù)名。例如:
function functionName(arg0) { //函數(shù)體 } alert(functionName.name) // "functionName"
函數(shù)聲明最主要的特征就是函數(shù)聲明的提升,所以我們可以把函數(shù)聲明放在調(diào)用它的語句的后面,因?yàn)閳?zhí)行代碼前會(huì)先讀取函數(shù)聲明。比如:
hello(); function hello(){ alert("hello"); }
上面的代碼可以在瀏覽器正常運(yùn)行。
函數(shù)表達(dá)式語法如下:
var functionName = function(arg0){ //函數(shù)體 }; alert(functionName.name) // ""
如上所示當(dāng)我們輸出函數(shù)名時(shí)返回了空字符串,因?yàn)閒unction關(guān)鍵字后面沒有標(biāo)識(shí)符,這種情況下創(chuàng)建的函數(shù)為匿名函數(shù)。接下來我們就談?wù)劺煤瘮?shù)表達(dá)式所創(chuàng)建的匿名函數(shù)有什么應(yīng)用。
應(yīng)用函數(shù)表達(dá)式最典型的應(yīng)用就是模仿塊級(jí)作用域,我們都知道JavaScript沒有塊級(jí)作用域,不過我們可以用函數(shù)表達(dá)式模仿塊級(jí)作用域。形成獨(dú)立作用域,從而避免全局污染。
操作方法:聲明匿名函數(shù),立馬調(diào)用。
最經(jīng)典的例子:
function createFunctions(){ var result = []; for (var i=0; i < 10; i++){ result[i] = function(){ return i; }; } return result; } createFunctions();
乍一看每個(gè)函數(shù)都應(yīng)該返回自己的索引值,即位置0的函數(shù)返回0,1的返回1,以此類推。實(shí)際上每個(gè)函數(shù)都將返回10,因?yàn)檫@里的i是貫穿整個(gè)作用域的,我們把上面代碼修改一下:
//寫法1 (function(){ //這里是塊級(jí)作用域 var result = []; for(var i=0;i<10;i++){ result[i] = (function(num){ return function(){ return num; }; }(i))(); } return result; })(); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] //寫法2 var hasfunction = function(){ var result = []; for(var i=0;i<10;i++){ result[i] = (function(num){ return function(){ return num; }; }(i))(); } return result; } hasfunction();
在立即執(zhí)行函數(shù)執(zhí)行的時(shí)候,i的值被賦值給num,同時(shí)創(chuàng)建返回num的閉包,從而result數(shù)組每個(gè)函數(shù)都有一個(gè)num變量的副本。
完。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80782.html
摘要:標(biāo)簽加載順序如果要談標(biāo)簽加載順序問題,首先要談的就是標(biāo)簽的位置,因?yàn)闃?biāo)簽的位置對于加載順序來說有著很重要的影響。例如標(biāo)簽在以上代碼中,可能由于下載時(shí)間比較長,由于兩個(gè)標(biāo)簽都是異步執(zhí)行,互不干擾,因此可能就會(huì)先于執(zhí)行。 談?wù)? 標(biāo)簽加載順序的問題 這篇文章比較長,如果你耐心讀完了,我會(huì)感謝你愿意在這篇文章上花費(fèi)時(shí)間,也希望你有收獲。 其實(shí)說起,幾乎搞前端的都知道他的作用:引入 JavaS...
摘要:中的有多重意義。它可能是一個(gè)構(gòu)造器,承擔(dān)起對象模板的作用可能是對象的方法,負(fù)責(zé)向?qū)ο蟀l(fā)送消息。語義匿名函數(shù)處理某些特殊效果如處理一些數(shù)據(jù)又不想暴露過多的變量判斷版本的方式最終只要一個(gè)結(jié)果,匿名函數(shù)內(nèi)部用到了一些局部變量全部可以隔離開。 JavaScript 中的 function 有多重意義。它可能是一個(gè)構(gòu)造器(constructor),承擔(dān)起對象模板的作用; 可能是對象的方法(met...
摘要:可以理解為,在屏幕上通過瀏覽器窗口所能看到網(wǎng)頁內(nèi)容的高度。都表示瀏覽器中網(wǎng)頁內(nèi)容的高度,但稍有區(qū)別。解決等瀏覽器不支持標(biāo)簽的問題高版本的瀏覽器用了低版本的瀏覽器無法識(shí)別的元素,從而導(dǎo)致不能解析。這時(shí)候我們就會(huì)面臨這個(gè)兼容性問題。 javaScript 在IE、FireFox、Netscape等不同的瀏覽器里,對于document.body的clientHeight、offsetHeig...
摘要:可以理解為,在屏幕上通過瀏覽器窗口所能看到網(wǎng)頁內(nèi)容的高度。都表示瀏覽器中網(wǎng)頁內(nèi)容的高度,但稍有區(qū)別。解決等瀏覽器不支持標(biāo)簽的問題高版本的瀏覽器用了低版本的瀏覽器無法識(shí)別的元素,從而導(dǎo)致不能解析。這時(shí)候我們就會(huì)面臨這個(gè)兼容性問題。 javaScript 在IE、FireFox、Netscape等不同的瀏覽器里,對于document.body的clientHeight、offsetHeig...
閱讀 2243·2021-11-15 11:39
閱讀 1008·2021-09-26 09:55
閱讀 949·2021-09-04 16:48
閱讀 2868·2021-08-12 13:23
閱讀 935·2021-07-30 15:30
閱讀 2469·2019-08-29 14:16
閱讀 903·2019-08-26 10:15
閱讀 539·2019-08-23 18:40