在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 好陌生的一道js面試題,怎么解析呢

好陌生的一道js面試題,怎么解析呢

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分別輸出什么???
各位大神,這應該怎么解析呢?!痑,b,c這賦值寫法很少見?

回答
編輯回答
初心

fun方法返回了一個對象 對象的fun屬性又是這個fun方法 所以不論調(diào)誰的fun方法 都返回一個對象 可以對輸入的參數(shù)做記憶

2018年9月20日 09:11
編輯回答
不討囍

外層fun函數(shù)返回一個對象,這個對象的fun函數(shù)返回的外層fun函數(shù)的調(diào)用結(jié)果,o是會記憶的。按照這個就應該很好分析出來

2017年7月2日 03:04
編輯回答
寫榮

第一個:var a = fun(0).fun(1);相當于執(zhí)行外面的fun(n,o)函數(shù),因為o沒有傳參,所以console.log(o)為undefined,然后
return {

fun:function(m){
    return fun(m,n);
}

}
的意思就是將里面的fun:function(m)賦值給fun(0),然后在則行他,相當于則行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){  //到了這一步,就相當于 fun() = fun:function(m){return         
                                                                           fun(m,n);}
              return fun(m,n); n = 1 //接受上面的參數(shù),為1
            }
    }
然后fun(0).fun(1) 就相當于執(zhí)行了 剛剛return會來的函數(shù) fun(m,1),又回到最外層的函數(shù),以此類推
輸出結(jié)果為:undefined,0,1,1

語言組織能力一般,請見諒
2017年7月9日 21:48
編輯回答
不歸路

首先要明白一件事,fun的返回值是什么?返回值是如下的一個東西。

{
    fun:function(m){
        return fun(m,n);
    }
}

n,o是調(diào)用形成的閉包中的一個變量。全圖中只有return fun(m,n);這個位置傳入了n,n是調(diào)用的時候創(chuàng)建的,那么就是上次傳入的值。

2017年4月8日 09:27
編輯回答
帥到炸
    function fun(n,o){    //fun一
        console.log(o);
        return {
            fun:function(m){  //fun二
                return fun(m,n);   //fun三
            }
        }
    }

首先要弄清楚這里的三個fun到底是指的什么

fun一:一個全局的函數(shù),返回值是一個對象obj
fun二:是返回對象obj里面的一個鍵(key),這個鍵對應的是一個匿名函數(shù)
fun三:調(diào)用的fun一

從最開始理解var a = fun(0).fun(1);
最先執(zhí)行的是fun(0)這個時候沒有第二個參數(shù)o,所以為undefined。
這個時候fun(0)返回了一個對象:

    {
        fun:function(m){
            return fun(m,0);  
            }
    }
    var a = fun(0).fun(1); 
    //這時候再把1帶入就是
  
    var a = function(1){ return fun(1,0)};
    
    //其實就是
    var a = fun(1,0);   //這個時候o為0 ----打印為0  
    
   //返回的對象為  
   {
        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像這樣一部一部的推即可

2017年4月7日 11:59
編輯回答
何蘇葉
var a = fun(0).fun(1);
//這里執(zhí)行fun(0),打印o,o為undefined,并返回一個對象{fun:function(m){return fun(m,n);}},對象里的n指向0
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的運行結(jié)果,即打印0,并把{fun:function(m){return fun(m,n);}}賦值給a(此時n指向1)
//記住 a = {fun:function(m){return fun(m,n);}} (此時n指向1)
a.fun(2);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,1)的運行結(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)的運行結(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,并返回一個對象{fun:function(m){return fun(m,n);}},對象里的n指向0
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的運行結(jié)果,即打印0,并返回{fun:function(m){return fun(m,n);}} (此時n指向1)
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(2),得到的是fun(2,1)的運行結(jié)果,即打印1,并返回{fun:function(m){return fun(m,n);}} (此時n指向2)
//接下來執(zhí)行{fun:function(m){return fun(m,n);}}.fun(3),得到的是fun(3,2)的運行結(jié)果,即打印2,并返回{fun:function(m){return fun(m,n);}}賦值給b (此時n指向3)
var c =fun(0);
//這里執(zhí)行fun(0),打印o,o為undefined,并返回一個對象{fun:function(m){return fun(m,n);}}賦值給c,對象里的n指向0
c.fun(1);
//這里執(zhí)行{fun:function(m){return fun(m,n);}}.fun(1),得到的是fun(1,0)的運行結(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)的運行結(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)的運行結(jié)果,即打印0,并返回{fun:function(m){return fun(m,n);}},沒有接收方
2017年10月4日 09:16