,你需要做的是財產可通過返回一個對象
var first_function = (function(d3, second_function) {
// this function is unavailable to the outer scope
function third_function(param1, param2) {
/* do stuff here */
}
// this object allows us to access part of the inner scope
// by passing us a reference
return {
third_function: third_function
}
}})(d3, second_function);
有趣的是,我們還可以利用這個來創建'私有'方法和變量。
var first_function = (function(d3, second_function) {
// this function is unavailable to the outer scope
function third_function(param1, param2) {
/* do stuff here */
}
var myPrivate = 0; // outer scope cannot access
// this object allows us to access part of the inner scope
// by passing us a reference
return {
third_function: third_function,
getter: function() {
return myPrivate; // now it can, through the getter
}
}
}})(d3, second_function);
如果您想了解更多關於這是如何工作的,我建議您閱讀JavaScript範圍和關閉。
請注意,IIFE不會返回任何東西,並立即執行,所以基本上'first_function'是'undefined'? – adeneo
你的IIFE返回了什麼?您需要返回一個具有third_function屬性的對象,否則您將無法訪問它。 –
另外,您不能訪問IIFE之外的'third_function',這就是閉包的作用,內部函數在外部範圍中不可用,除非您返回某些內容以使其可用。真正的問題變成了;爲什麼你會使用IIFE? – adeneo