學(xué)習(xí)YUI.Ext 第二天
更新時間:2007年03月10日 00:00:00 作者:
遇到一些JS的語法上的問題,沒有理解透,惡補(bǔ)基本功!
匿名函數(shù) An anonymous function
沒有名字的就叫作“匿名函數(shù)”,像這個
function(x,y){return x+y}
沒有名字當(dāng)然不能直接調(diào)用,也無法調(diào)用;最多能只能把它賦值或閉包處理(閉包是什么下面再講),如:
var sum =function(x,y){return x+y};
alert(sum(1,2));
這時候,與傳統(tǒng)寫法是等價的 function sum(x,y){return x+y}.這樣的寫法讓人感覺更OOP,因?yàn)閟um變量就包含了function...這個函數(shù)體;
還可以閉包的方式調(diào)用該函數(shù):
(functioin(x,y){return x+y})(1,2) //返回值3
代碼很簡潔。注意括號的使用,形式為(exp)()。這種用法可以稱作 閉包c(diǎn)losure。
后面括號的是參數(shù),把這些參數(shù)放進(jìn)fn里面立即計算,得出一個值 3。這實(shí)際上是一個表達(dá)式的運(yùn)算。沒想到fn函數(shù)體也可以放進(jìn)去參與運(yùn)算^_^(Using function as an expression)?。ɑ竟Γ罕磉_(dá)式Expression,其含義是通過計算后,始終會返回一個值,無論這個表達(dá)式有多長)
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.
再談閉包,閉包的作用是形成一個定義域,舉一個很白癡的例子 1+(2+3),括號部分優(yōu)先運(yùn)算,或者換個說法,括號里面的歸為一個范圍,這個范圍我不理你做什么事情都是你里面做的事情,與括號外界無關(guān)(好像是廢話,--我是這樣想的,就是這樣寫的@#@),程序上的理解也是這樣。js有函數(shù)定義域function scope,因此,當(dāng)使用this指向一個對象出現(xiàn)問題的時候,可考慮使用閉包。具體例子在:http://www.svendtofte.com/code/practical_functional_js/
匿名函數(shù) An anonymous function
沒有名字的就叫作“匿名函數(shù)”,像這個
function(x,y){return x+y}
沒有名字當(dāng)然不能直接調(diào)用,也無法調(diào)用;最多能只能把它賦值或閉包處理(閉包是什么下面再講),如:
var sum =function(x,y){return x+y};
alert(sum(1,2));
這時候,與傳統(tǒng)寫法是等價的 function sum(x,y){return x+y}.這樣的寫法讓人感覺更OOP,因?yàn)閟um變量就包含了function...這個函數(shù)體;
還可以閉包的方式調(diào)用該函數(shù):
(functioin(x,y){return x+y})(1,2) //返回值3
代碼很簡潔。注意括號的使用,形式為(exp)()。這種用法可以稱作 閉包c(diǎn)losure。
后面括號的是參數(shù),把這些參數(shù)放進(jìn)fn里面立即計算,得出一個值 3。這實(shí)際上是一個表達(dá)式的運(yùn)算。沒想到fn函數(shù)體也可以放進(jìn)去參與運(yùn)算^_^(Using function as an expression)?。ɑ竟Γ罕磉_(dá)式Expression,其含義是通過計算后,始終會返回一個值,無論這個表達(dá)式有多長)
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.
再談閉包,閉包的作用是形成一個定義域,舉一個很白癡的例子 1+(2+3),括號部分優(yōu)先運(yùn)算,或者換個說法,括號里面的歸為一個范圍,這個范圍我不理你做什么事情都是你里面做的事情,與括號外界無關(guān)(好像是廢話,--我是這樣想的,就是這樣寫的@#@),程序上的理解也是這樣。js有函數(shù)定義域function scope,因此,當(dāng)使用this指向一個對象出現(xiàn)問題的時候,可考慮使用閉包。具體例子在:http://www.svendtofte.com/code/practical_functional_js/
相關(guān)文章
Javascript YUI 讀碼日記之 YAHOO.util.Dom - Part.3
在 YAHOO.util.Dom 中能發(fā)現(xiàn)很多有趣的東西。下面先說下 toCamel 的函數(shù),感謝 小馬 幫助我理解了這個函數(shù)。toCamel 把指定名稱替換為駝峰寫法,比如把 border-width 替換為 borderWidth 。2008-03-03yui3的AOP(面向切面編程)和OOP(面向?qū)ο缶幊?
這篇文章主要介紹了yui3的AOP(面向切面編程)和OOP(面向?qū)ο缶幊?,需要的朋友可以參考下2015-05-05ext checkboxgroup 回填數(shù)據(jù)解決
解決checkboxgroup回填數(shù)據(jù)問題的實(shí)現(xiàn)代碼2009-08-08可縮放Reloaded-一個針對可縮放元素的復(fù)用組件
可縮放Reloaded-一個針對可縮放元素的復(fù)用組件...2007-03-03