function fun(n,o){
console.log(o);
return {
fun:function(m){
return fun(m,n);
}
}
}
var a = fun(0).fun(1);
a.fun(2);
a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0);
c.fun(1);
c.fun(2);
c.fun(3);
問a,b,c分別輸出什么???
各位大神,這應(yīng)該怎么解析呢?!痑,b,c這賦值寫法很少見?
第一個(gè):var a = fun(0).fun(1);相當(dāng)于執(zhí)行外面的fun(n,o)函數(shù),因?yàn)閛沒有傳參,所以console.log(o)為undefined,然后
return {
fun:function(m){
return fun(m,n);
}
}
的意思就是將里面的fun:function(m)賦值給fun(0),然后在則行他,相當(dāng)于則行fun(m,n),最后結(jié)果賦值給a
var a = fun(0).fun(1);
a.fun(2);
a.fun(3); 的完整流程:
fun(0) == fun(n,o){
//這里o沒傳參,所以值為undefined
console.log(o); o = undefined
return fun:function(m){ //到了這一步,就相當(dāng)于 fun() = fun:function(m){return
fun(m,n);}
return fun(m,n); n = 1 //接受上面的參數(shù),為1
}
}
然后fun(0).fun(1) 就相當(dāng)于執(zhí)行了 剛剛return會(huì)來的函數(shù) fun(m,1),又回到最外層的函數(shù),以此類推
輸出結(jié)果為:undefined,0,1,1
語言組織能力一般,請(qǐng)見諒
function fun(n,o){ //fun一
console.log(o);
return {
fun:function(m){ //fun二
return fun(m,n); //fun三
}
}
}
首先要弄清楚這里的三個(gè)fun
到底是指的什么
fun一:一個(gè)全局的函數(shù),返回值是一個(gè)對(duì)象obj
fun二:是返回對(duì)象obj里面的一個(gè)鍵(key),這個(gè)鍵對(duì)應(yīng)的是一個(gè)匿名函數(shù)
fun三:調(diào)用的fun一
從最開始理解var a = fun(0).fun(1);
最先執(zhí)行的是fun(0)
這個(gè)時(shí)候沒有第二個(gè)參數(shù)o,所以為undefined。
這個(gè)時(shí)候fun(0)
返回了一個(gè)對(duì)象:
{
fun:function(m){
return fun(m,0);
}
}
var a = fun(0).fun(1);
//這時(shí)候再把1帶入就是
var a = function(1){ return fun(1,0)};
//其實(shí)就是
var a = fun(1,0); //這個(gè)時(shí)候o為0 ----打印為0
//返回的對(duì)象為
{
fun:function(m){
return fun(m,1);
}
}
a.fun(2); //也就是 fun(2,1) ----打印為1
a.fun(3); //也就是 fun(3,1) ----打印為1
//a一系列的打印下來 undefined 0 1 1
后面的B和C像這樣一部一部的推即可
var a = fun(0).fun(1);
//這里執(zhí)行fun(0),打印o,o為undefined,并返回一個(gè)對(duì)象{fun:function(m){return fun(m,n);}},對(duì)象里的n指向0
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的運(yùn)行結(jié)果,即打印0,并把{fun:function(m){return fun(m,n);}}賦值給a(此時(shí)n指向1)
//記住 a = {fun:function(m){return fun(m,n);}} (此時(shí)n指向1)
a.fun(2);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,1)的運(yùn)行結(jié)果,即打印1,并返回{fun:function(m){return fun(m,n);}},沒有接收方
a.fun(3);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(3,1)的運(yùn)行結(jié)果,即打印1,并返回{fun:function(m){return fun(m,n);}},沒有接收方
var b =fun(0).fun(1).fun(2).fun(3);
//這里執(zhí)行fun(0),打印o,o為undefined,并返回一個(gè)對(duì)象{fun:function(m){return fun(m,n);}},對(duì)象里的n指向0
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的運(yùn)行結(jié)果,即打印0,并返回{fun:function(m){return fun(m,n);}} (此時(shí)n指向1)
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,1)的運(yùn)行結(jié)果,即打印1,并返回{fun:function(m){return fun(m,n);}} (此時(shí)n指向2)
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(3),得到的是fun(3,2)的運(yùn)行結(jié)果,即打印2,并返回{fun:function(m){return fun(m,n);}}賦值給b (此時(shí)n指向3)
var c =fun(0);
//這里執(zhí)行fun(0),打印o,o為undefined,并返回一個(gè)對(duì)象{fun:function(m){return fun(m,n);}}賦值給c,對(duì)象里的n指向0
c.fun(1);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的運(yùn)行結(jié)果,即打印0,并返回{fun:function(m){return fun(m,n);}},沒有接收方
c.fun(2);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,0)的運(yùn)行結(jié)果,即打印0,并返回{fun:function(m){return fun(m,n);}},沒有接收方
c.fun(3);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(3),得到的是fun(3,0)的運(yùn)行結(jié)果,即打印0,并返回{fun:function(m){return fun(m,n);}},沒有接收方
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。