學(xué)習(xí)YUI.Ext 第二天
更新時(shí)間:2007年03月10日 00:00:00 作者:
遇到一些JS的語(yǔ)法上的問(wèn)題,沒(méi)有理解透,惡補(bǔ)基本功!
匿名函數(shù) An anonymous function
沒(méi)有名字的就叫作“匿名函數(shù)”,像這個(gè)
function(x,y){return x+y}
沒(méi)有名字當(dāng)然不能直接調(diào)用,也無(wú)法調(diào)用;最多能只能把它賦值或閉包處理(閉包是什么下面再講),如:
var sum =function(x,y){return x+y};
alert(sum(1,2));
這時(shí)候,與傳統(tǒng)寫(xiě)法是等價(jià)的 function sum(x,y){return x+y}.這樣的寫(xiě)法讓人感覺(jué)更OOP,因?yàn)閟um變量就包含了function...這個(gè)函數(shù)體;
還可以閉包的方式調(diào)用該函數(shù):
(functioin(x,y){return x+y})(1,2) //返回值3
代碼很簡(jiǎn)潔。注意括號(hào)的使用,形式為(exp)()。這種用法可以稱(chēng)作 閉包c(diǎn)losure。
后面括號(hào)的是參數(shù),把這些參數(shù)放進(jìn)fn里面立即計(jì)算,得出一個(gè)值 3。這實(shí)際上是一個(gè)表達(dá)式的運(yùn)算。沒(méi)想到fn函數(shù)體也可以放進(jìn)去參與運(yùn)算^_^(Using function as an expression)?。ɑ竟Γ罕磉_(dá)式Expression,其含義是通過(guò)計(jì)算后,始終會(huì)返回一個(gè)值,無(wú)論這個(gè)表達(dá)式有多長(zhǎng))
fn還可以以參數(shù)形式傳遞(passing function as argument to other functions)
var main_fn = function(fn,x,y){return fn(x,y)}
var sum = function (x,y){
return x+y;
}
alert(main_fn(sum,1,2)) // result:3
總結(jié)一下(by an IBM Engineer's article, refer to IBM website,最好用心記一記)
Functions need not have names all the time.
Functions can be assigned to variables like other values.
A function expression can be written and enclosed in parenetheses for application later.
Functions can be passed as arguments to oher funcitons.
再談閉包,閉包的作用是形成一個(gè)定義域,舉一個(gè)很白癡的例子 1+(2+3),括號(hào)部分優(yōu)先運(yùn)算,或者換個(gè)說(shuō)法,括號(hào)里面的歸為一個(gè)范圍,這個(gè)范圍我不理你做什么事情都是你里面做的事情,與括號(hào)外界無(wú)關(guān)(好像是廢話(huà),--我是這樣想的,就是這樣寫(xiě)的@#@),程序上的理解也是這樣。js有函數(shù)定義域function scope,因此,當(dāng)使用this指向一個(gè)對(duì)象出現(xiàn)問(wèn)題的時(shí)候,可考慮使用閉包。具體例子在:http://www.svendtofte.com/code/practical_functional_js/
匿名函數(shù) An anonymous function
沒(méi)有名字的就叫作“匿名函數(shù)”,像這個(gè)
function(x,y){return x+y}
沒(méi)有名字當(dāng)然不能直接調(diào)用,也無(wú)法調(diào)用;最多能只能把它賦值或閉包處理(閉包是什么下面再講),如:
var sum =function(x,y){return x+y};
alert(sum(1,2));
這時(shí)候,與傳統(tǒng)寫(xiě)法是等價(jià)的 function sum(x,y){return x+y}.這樣的寫(xiě)法讓人感覺(jué)更OOP,因?yàn)閟um變量就包含了function...這個(gè)函數(shù)體;
還可以閉包的方式調(diào)用該函數(shù):
(functioin(x,y){return x+y})(1,2) //返回值3
代碼很簡(jiǎn)潔。注意括號(hào)的使用,形式為(exp)()。這種用法可以稱(chēng)作 閉包c(diǎn)losure。
后面括號(hào)的是參數(shù),把這些參數(shù)放進(jìn)fn里面立即計(jì)算,得出一個(gè)值 3。這實(shí)際上是一個(gè)表達(dá)式的運(yùn)算。沒(méi)想到fn函數(shù)體也可以放進(jìn)去參與運(yùn)算^_^(Using function as an expression)?。ɑ竟Γ罕磉_(dá)式Expression,其含義是通過(guò)計(jì)算后,始終會(huì)返回一個(gè)值,無(wú)論這個(gè)表達(dá)式有多長(zhǎng))
fn還可以以參數(shù)形式傳遞(passing function as argument to other functions)
var main_fn = function(fn,x,y){return fn(x,y)}
var sum = function (x,y){
return x+y;
}
alert(main_fn(sum,1,2)) // result:3
總結(jié)一下(by an IBM Engineer's article, refer to IBM website,最好用心記一記)
Functions need not have names all the time.
Functions can be assigned to variables like other values.
A function expression can be written and enclosed in parenetheses for application later.
Functions can be passed as arguments to oher funcitons.
再談閉包,閉包的作用是形成一個(gè)定義域,舉一個(gè)很白癡的例子 1+(2+3),括號(hào)部分優(yōu)先運(yùn)算,或者換個(gè)說(shuō)法,括號(hào)里面的歸為一個(gè)范圍,這個(gè)范圍我不理你做什么事情都是你里面做的事情,與括號(hào)外界無(wú)關(guān)(好像是廢話(huà),--我是這樣想的,就是這樣寫(xiě)的@#@),程序上的理解也是這樣。js有函數(shù)定義域function scope,因此,當(dāng)使用this指向一個(gè)對(duì)象出現(xiàn)問(wèn)題的時(shí)候,可考慮使用閉包。具體例子在:http://www.svendtofte.com/code/practical_functional_js/
相關(guān)文章
javascript YUI 讀碼日記之 YAHOO.util.Dom - Part.4
YAHOO.util.Dom 中的 getXY 函數(shù)讓開(kāi)發(fā)者充分體驗(yàn)到不同瀏覽器的 Hack 的樂(lè)趣。IE8 即將破殼而出,但愿下面的函數(shù)不會(huì)又多個(gè) if 判斷。getXY 函數(shù)使用 匿名函數(shù)執(zhí)行返回 函數(shù)(聽(tīng)起來(lái)有點(diǎn)拗口,可以參考 圓心 Blog 上的一篇文章)。2008-03-03
使用EXT實(shí)現(xiàn)無(wú)刷新動(dòng)態(tài)調(diào)用股票信息
最近開(kāi)始對(duì)ExtJS感興趣了,今天正好有空,花了點(diǎn)時(shí)間,寫(xiě)了個(gè)基于Ext的例子。2008-11-11
可縮放Reloaded-一個(gè)針對(duì)可縮放元素的復(fù)用組件
可縮放Reloaded-一個(gè)針對(duì)可縮放元素的復(fù)用組件...2007-03-03
學(xué)習(xí)YUI.Ext 第六天--關(guān)于樹(shù)TreePanel(Part 2異步獲取節(jié)點(diǎn))
學(xué)習(xí)YUI.Ext 第六天--關(guān)于樹(shù)TreePanel(Part 2異步獲取節(jié)點(diǎn))...2007-03-03
Ext.MessageBox工具類(lèi)簡(jiǎn)介
Ext.MessageBox工具類(lèi)簡(jiǎn)介,研究源碼才能發(fā)現(xiàn)更多的東西。2009-12-12
Ext面向?qū)ο箝_(kāi)發(fā)實(shí)踐代碼
這是自己在學(xué)習(xí)Ext過(guò)程中一個(gè)寫(xiě)的一個(gè)示例程序,僅為練習(xí),功能并不全,現(xiàn)將其記錄在我的博客中,希望可以和學(xué)習(xí)Ext的朋友一起分享2008-11-11

