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

鍍金池/ 問(wèn)答/人工智能  HTML/ web前端面試一道面試題

web前端面試一道面試題

今天面試的時(shí)候一道面試題,大概是這樣的,感覺(jué)自己很繞,希望大家?guī)臀铱聪?。謝謝。
問(wèn)題是下面會(huì)輸出3次1嗎,如果不會(huì),能修改使其實(shí)現(xiàn)嗎?

function newFun(a){
        return function(a){
            console.log(a)
        }
    }
function fun(a) {
    console.log(a)
    newFun((a)=>{
        console.log(a)
    })
}
fun(1)
回答
編輯回答
六扇門(mén)

function newFun(a){

    console.log(a)
    return function(a){
        console.log(a)
    }
}

function fun(a) {

console.log(a)
newFun(a)(a)

}
fun(1)

2017年7月26日 02:17
編輯回答
扯機(jī)薄

可以改成這個(gè)樣子(有點(diǎn)變態(tài)啊):

 function newFun(a){
            return function(a){
                console.log("3->"+a)
            }
        }
    function fun(a) {
        console.log("1->"+a)
        newFun(((a)=>{
            console.log("2->"+a)
        })(a))(a)
    }
fun(1);

運(yùn)行結(jié)果

1->1
2->1
3->1
2017年7月3日 16:58
編輯回答
情皺

大改步驟為:

    function newFun(a){
        return (a => {console.log(a + ">>>3")})(a);
    }

    function fun(a) {
        console.log(a + ">>>1");    //1
        newFun( (a => {console.log(a + ">>>2");return a})(a));
    }
    fun(1);

可能會(huì)更繞,你可以好好看看一樓的解釋

2017年2月27日 21:10
編輯回答
短嘆

當(dāng)然不會(huì)了,人肉單步一下就知道了,跳過(guò)聲明,從fun(1)進(jìn)入,請(qǐng)跟著序號(hào)走

function newFun(a) {  // 2-1: 調(diào)用newFun,參數(shù)為剛剛的箭頭函數(shù)
    return function(a) {  // 3: 返回一個(gè)匿名函數(shù),這個(gè)匿名函數(shù)接受并打印參數(shù)a
        console.log(a);
    }
    // 4-0: 函數(shù)newFun結(jié)束
}

function fun(a) {  // 0-1: 調(diào)用fun,參數(shù)1
    console.log(a);  // 1: 打印a,即參數(shù)1
    newFun(a => {  // 2-0: 調(diào)用newFun,參數(shù)為一個(gè)箭頭函數(shù)(注意這個(gè)函數(shù)是作為參數(shù)被聲明的,此時(shí)這個(gè)函數(shù)還沒(méi)有被調(diào)用)
        console.log(a);
    });
    // 4-1: 函數(shù)newFun的調(diào)用已經(jīng)結(jié)束,并且它返回了一個(gè)匿名函數(shù),但這個(gè)匿名函數(shù)沒(méi)有被一個(gè)變量接收
    // 5-0: 函數(shù)fun的調(diào)用已經(jīng)結(jié)束,該函數(shù)沒(méi)有返回任何值
}

fun(1);  // 0-0: 調(diào)用fun,參數(shù)1
// 5-1: 函數(shù)fun的調(diào)用已經(jīng)結(jié)束,腳本結(jié)束

可以看出從頭到尾只打印了一次1,只有函數(shù)fun中的第一個(gè)console.log(a)會(huì)被執(zhí)行,作為迷惑你的另外兩個(gè)console.log(a)分別在兩個(gè)作為參數(shù)和返回值的函數(shù)中,但沒(méi)有被調(diào)用。要使得這兩個(gè)console.log(a)被執(zhí)行,只要調(diào)用其所屬的函數(shù)即可

function newFun(a) {  // 3-1: 調(diào)用newFun,參數(shù)為剛剛的箭頭函數(shù)
    return function(a) {  // 4: 返回一個(gè)匿名函數(shù),這個(gè)匿名函數(shù)接受并打印參數(shù)a
        console.log(a);
    }
    // 5-0: 函數(shù)newFun結(jié)束
}

function fun(a) {  // 0-1: 調(diào)用fun,參數(shù)1
    console.log(a);  // 1: 打印a,即參數(shù)1
    let brandNewFun = a => console.log(a);
    brandNewFun(a);  // 2: 調(diào)用brandNewFun,參數(shù)為a,即1
    newFun(brandNewFun)(a);  // 3-0: 調(diào)用newFun,參數(shù)為一個(gè)箭頭函數(shù)brandNewFun(注意這個(gè)函數(shù)是作為參數(shù)的,此時(shí)這個(gè)函數(shù)沒(méi)有被調(diào)用)
    // 5-1: 函數(shù)newFun的調(diào)用已經(jīng)結(jié)束,并且它返回了一個(gè)匿名函數(shù),且我們立即調(diào)用了這個(gè)匿名函數(shù),參數(shù)為a,即1,因此這里輸出1
    // 6-0: 函數(shù)fun的調(diào)用已經(jīng)結(jié)束,該函數(shù)沒(méi)有返回任何值
}

fun(1);  // 0-0: 調(diào)用fun,參數(shù)1
// 6-1: 函數(shù)fun的調(diào)用已經(jīng)結(jié)束,腳本結(jié)束
2017年4月6日 06:29
編輯回答
糖豆豆

肯定不會(huì)輸出3個(gè)1,首先箭頭函數(shù)當(dāng)參數(shù)并沒(méi)有執(zhí)行,其次箭頭函數(shù)里執(zhí)行后的a值也需要返回出來(lái),不然是undefined,可以把這樣來(lái)看a是從哪兒來(lái)的:

function newFun(a){
        console.log(`C: ${a}`);
        return function(j){
            console.log(`D: ${j}`);
        }
    }
    function fun(a) {
        console.log(`A: ${a}`);
        newFun(((i)=>{
            console.log(`B: ${i}`);
            return i;
        })(a))(a)
    }
    fun(1)
2017年6月11日 09:30
編輯回答
尤禮
 //類(lèi)似Thunk函數(shù)
function newFun(...args){
        return function(fn){
            console.log(...args)
            return    fn.call(this,...args)
        }
    }
function fun(a) {
    console.log(a)
    newFun(a)((a)=>{
        console.log(a)
    })
}
fun(1)
2017年4月19日 00:39
編輯回答
真難過(guò)
function fun(a) {
    console.log(a)
    return function(a) {
        console.log(a)
    }
}
fun(1)

好像最后也就執(zhí)行了一個(gè)console.log吧。

2018年6月4日 08:46