一個參數傳遞函數表達式作爲參數傳遞的說明需要有關如何的函數表達式被作爲在函數聲明
實施例:
var greeting = function(first,last) {
return "Hello " + first + last;
};
function greet(frst,lst,word) {
var result = word(frst,lst);
console.log(result);
}
greet("Joe","Bob",greeting);
我明白var greeting
被指派匿名函數並將此函數作爲表達式傳遞。
我明白,在全局執行上下文中,該變量greeting是留出一些內存空間,而不是其內部的函數。
我知道函數greet,是留出內存空間,當我們調用函數greet時,它爲局部變量結果創建內存空間。現在變量結果被分配到word(frst,lst)
這是否使它成爲函數?意思是word(frst,lst)
函數表達式?
我不明白的是...
它是如何,當我們調用該函數:
greet("Joe","Bob",greeting);
瀏覽器能夠採取的說法「喬」和「Bob」並將它們放到word(frst,lst)
中,然後使用參數greeting,這是一個變量,它運行一個函數來添加它的兩個參數,當變量和函數greet中的參數具有不同的名稱時?我不明白這些論據是如何傳遞給我們的,給我們"Hello Joebob"
的結果。
如果我在任何陳述中出現錯誤,請糾正我,我非常感謝您的幫助。
請幫忙!!
謝謝!
所有這些都只是被某個存儲在內存中的函數對象的引用。所以'word'是指向內存中相同函數的引用的副本。 – zerkms