2016-11-30 37 views
-2

我曾經在VB.NET的大學(英國學院)編碼,有兩種方法來封裝代碼:通過一種方法和一個函數。一個方法只會執行一些代碼;另一方面,函數也具有返回值的優點。過程式語言有返回值的函數嗎?

現在我使用Javascript中的過程風格編寫課程。

我的問題是,程序語言中的函數是否能夠返回值?或者這只是一個面向對象的功能?或者這是所有語言的通用特徵?

+0

簡答:是的。長答案:是,但不一定:)所有具有函數的語言都可以返回值。對不起,你開始學習VB,現在是時候忘掉一切 – xShirase

+0

團結兄弟。至少我可以跟蹤人們的IP地址。謝謝。 – Rehaan

+2

JavaScript是一種面向對象的語言。 – Quentin

回答

0

能夠從呼叫返回值完全正交於程序/功能/ OOP /你有什麼。

Javascript確實支持從調用返回值,因爲它是一個功能非常強大的語言,而不返回值的函數會讓人感到尷尬。大多數其他語言可以讓你做同樣的事情。實際上,Javascript是一種多範式語言 - 您可以看到它在許多不同的角色中使用,可以使用查詢。它可以讓你很好地混搭風格,或者選擇你喜歡的方式並堅持下去。

沒有「程序風格」這樣的東西。就像沒有「功能風格」或「OOP風格」或「關係風格」。這些只是非常寬的標籤,沒有客觀背景。考慮你需要做什麼,並找到一種方法來做到這一點。唯一一個這樣的標籤就是當某人想強迫某種風格的時候 - 在這種情況下,請問他們的意思到底是什麼 - 我們無法幫到你,這是他們的頭腦。

例如,程序代碼用於表示「沒有結構化的結構」。沒有功能,程序,甚至沒有和循環。今天,大多數人實際上使用術語「程序」來表示過去是「結構編程」 - 程序和函數,「結構化分支和循環」等高層次結構,以及大量全局變量(儘管希望你不再是傳遞參數並通過全局變量返回值 - YMMV :))。

「面向對象的程序設計」意味着「來回發送消息」 - 開創性的OOP論文甚至沒有返回值,如果您需要響應,您只需要聽一個「響應消息」 。畢竟,目標對象可能會回答得太晚或根本不會回答(比如說,當它獲得I/O響應時)。它絕對沒有任何形式的靜態類型(並且有人可能會認爲它根本沒有類型概念),而是擁有偵聽消息的對象。當有消息傳來時,對象想出瞭如何處理它 - 所有的對象都是動態的。唯一的公共接口是那些消息 - 其他所有內容都只是對象的內部細節。不出所料,分佈式系統重新激發了這種方法的普及,因爲這個模型本質上是異步的,而且是相當鬆散的耦合。

Javascript不支持類,當然。但是類與OOP完全正交 - 它們只是一種在語言中實現鍵入和(更重要)子類型的方法。原型不會比類更好或更差;函數不會比類更好或更差。所有這三種方法對於OOP(以及通常的編程)都是完全有效的方法,因爲忽略了完全的輸入,而Javascript主要是這樣做的。雖然您確實有跟蹤對象類型的方法,但最終只有對象的實際實例非常重要。

這些術語大多是無用的,最常用於嘲笑你不喜歡的風格:)在最好的情況下,它們代表了某些過去的時間,在某些圈子中對該術語給出的解釋是流行的 - 使務必傳達給定術語的實際含義。「程序性」可能意味着「不要使用對象」,「不要使用函數」,「對所有東西都使用全局變量」等等。我們不能說出你的主管/老師/老闆認爲「程序性」 - 只有他可以。

+0

不是說它改變了上面所做的任何參數,JS現在有類:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes –