2017-07-20 37 views
0

我是JavaScript新手,正在努力應對編程挑戰,將其作爲訓練營應用程序流程的一部分。嵌套函數是否被認爲是單一函數?

這個問題需要編寫一個函數來完成一項任務。

雖然我看起來很寬,但我還沒有遇到答案。

如果我編寫一個包含其他嵌套函數的函數,那麼它仍然被認爲是一個函數嗎?

+1

這取決於評估你的人的內部功能,但爲了安全起見,我肯定會避免做適用。相反,如果需要的話,你總是可以使用'this'。 –

+0

具有嵌套函數的函數在此處變爲「類」或「模塊」。在功能上(heh!),它不僅僅是一個單一的功能,而且在語法上它只是一個。它肯定是可以解釋的,但爲了安全起見,我可能會避免嵌套。 –

+0

@ObsidianAge我剛開始學習面向對象編程。我不完全知道如何使用這個 – Areid999

回答

3

如果我編寫一個包含其他嵌套函數的函數,那麼它仍然被認爲是一個函數嗎?

是的。一個函數是一個封裝單元,它是一個黑盒子。你可以調用它,並獲得結果,但如何從外部進行查看並不重要。將其內部實現模塊化爲多個本地函數的功能與只要其行爲不相同的功能是無法區分的。

0

是的。

從技術角度來看,你甚至不能編寫一個不調用嵌套函數的函數。單獨聲明變量的行爲將調用一系列函數來分配內存,這些內存反過來最終會調用匯編中的函數,然後調用處理器中的函數,以調用調用的內存驅動程序的調用函數。

類似地調用操作符來設置或操作變量是函數調用,它們都是分層的APIS,調用一系列函數。

假設你寫一個函數min看起來像這樣:

function min(a,b) { 
    return Math.min(a,b); 
} 

這仍然是即使它調用一個全局函數的單一功能。

同樣的道理,如果你寫了一個複雜的對象

function min(data) { 
    var smallest = function(a,b) { 
     if (a.x<b.x) { return a;} 
     else if (a.y>b.y) { return b;} 
     else if (a.y<b.y) return a; 
     return b; 
    } 
    return smallest(data[0],data[b]); 
} 
+1

我認爲將內部工作描述爲函數調用不是很有用,OP顯然是關於本地函數的。 – RobG

+0

謝謝!這是一個有用的解釋 – Areid999

相關問題