我最近學習JavaScript並碰到這段代碼。調用Javascript函數返回一個未定義值的函數
function sayIntro(name,age){
var address = "TX";
return function(name,age,address){
console.log("I am "+ name + " \nI am "+ age + " \nfrom "+address);
};
}
sayIntro("john",27)();
按我的理解,結果是不確定的,因爲恢復功能前面的兩個變量的範圍內 不可用。仍然如何獲得輸出如下?
I am john
I am 27
from TX
你只需陰影變量名。將它們重命名爲內部函數中的其他內容,並且它工作正常。 – deceze
'sayIntro'的變量仍然在匿名函數的範圍內 - 這不是問題。問題是有一組全新的參數具有相同的名稱,這些名稱不是傳遞值,並且因爲它們具有相同的名稱,所以它們隱藏了其他變量。 'return function(){'解決。 – Ryan
謝謝,但爲什麼這個問題得到減號?問是不是很愚蠢? –