2017-09-08 39 views
-1

對於我的noob問題感到抱歉,但我無法理解發生了什麼,我有一個接受回調的函數,而不是調用此函數,而是調用一個變量。奇怪的部分是,即時通訊沒有調用變量,當我加載頁面時,它自動運行變量「我」的功能可以解釋發生了什麼?在變量上調用函數

function whoAmI(name,callback) { 
    if(name === 'James') { 
    console.log("You are James"); 
    } else { 
    console.log("You are not James"); 
    } 

    callback(); 
} 

var me = whoAmI("Joe", function() { 
    console.log('Calback Finised'); 
}); 
+0

你實際上正在調用這個函數。您正在委託該功能,然後在您的whoAmI功能中調用它。 – Gacci

+1

您希望它做什麼?你想要它,所以當你做'我()'時它會被執行嗎? – Keith

+0

函數在JavaScript中只是(可調用的)對象,即它們是任何其他值的值。 'callback'是具有函數作爲其值的變量。 'callback();'解析'callback'的值(即「獲取」函數對象)並執行它('()')。如果你傳遞一個不是函數的值,你會得到一個錯誤。 –

回答

0

這裏:

var me = whoAmI("Joe", function() { 
    console.log('Calback Finised'); 
}); 

您呼叫的功能,並指定她變me

您的功能在這裏創造:

function whoAmI(name,callback) { 
    if(name === 'James') { 
    console.log("You are James"); 
    } else { 
    console.log("You are not James"); 
    } 

    callback(); 
} 

在這裏:

var me = whoAmI("Joe", function() { 
    console.log('Calback Finised'); 
}); 

它只是調用這個函數賦值給變量。

+0

'whoAmI'不會返回任何東西,所以'me'將會是'undefined'。 – 4castle

+0

@ 4castle,是的,你是對的 –