在的javascript函數被看作DATA。所以你被允許使用函數作爲變量。
在下面一行,
myPet = pet("Vivie");
什麼你實際上做的是調用寵物功能,結束了返回的函數,並把它裏面myPet。
但是,當你的代碼這一點,
myPet();
您呼叫myPet()函數[從寵物返回的功能。這是您將寵物分配給它後獲得的確切myPet。
就是這個原因,當你的代碼myPet();它調用該函數。
現在這裏有一個有趣的事情,
當你的代碼這一點,
var pet = function(name) {
return console.log(name);
},
myPet = pet("Vivie");
它的工作原理!!!!爲什麼它的工作呢?
在這裏,當你打電話給寵物函數它會控制你的名字並返回控制檯。它沒有返回任何功能。
但在myPet你的代碼中得到一個功能。
讓考什麼我們知道從寵物,
在你的情況看到返回的對象的類型:
var pet = function(name) {
var getName = function() {
return console.log(name);
}
return getName;
}
var myPet = pet("Vivie");
console.log(typeof myPet); // consoles : function.
您所呼叫的寵物,但你在該返回的函數中沒有執行任何操作。而是你說你可以使用myPet執行這個返回的函數。
另一種情況:
var pet = function(name) {
return console.log(name);
}
var myPet = pet("Vivie"); // consoles : Vivie
console.log(typeof myPet); // consoles : undefined
首先您要執行的寵物,並返回這就是爲什麼當你問的typeof myPet你沒有得到任何定義類型的控制檯。
最後,如果你想立即調用返回的函數,那麼你應該這樣使用自調用函數。
myPet = pet("Vivie")();
這個故事告訴我們:
myPet = pet("Vivie");
這裏myPet指寵物。而
myPet();
這裏myPet調用寵物。
參考文獻:typeof
'myPet =寵物(薇薇);''調用pet',但它不叫'getName'。 –