javascript - 請問怎麼理解電腦中的函數?

來源:互聯網
上載者:User
關鍵字 電腦 電腦科學 php javascript 函數
之前的個人理解覺得不妥已刪

類似於這樣的說法就不要回答了:函數是一個工廠,你放原料進去,它產生產品出來。

回複內容:

之前的個人理解覺得不妥已刪

類似於這樣的說法就不要回答了:函數是一個工廠,你放原料進去,它產生產品出來。

你的理解有點外行看熱鬧的意思,呵呵。
代碼本身就是抽象的,所以“電腦中的函數是一種對代碼進行抽象的方式”不能說不對,但是也和沒說一樣。至於“我們使用抽象出來的函數,而不用關心函數裡面的代碼是如何組織的”,只能說是一種訴求,實際上很多錯誤正是在函數內部產生的,因此我們不可能完全不關心函數的內部實現。

從語義上來說,函數是行為的具體實現,行為通常是動詞或動詞短語,如get()[擷取], getDetails()[擷取詳情], getDetailsById()[根據id擷取詳情]。
從開發的角度來說,函數是一種代碼結構,如果一段代碼會被使用2次及以上,那麼將這段代碼放在函數中可以使其更易於維護。
從可讀性上說,函數相當於名詞解釋,用簡短的名字表達一個相對複雜的事情,這樣閱讀起來比較愉快,也不容易歪樓。例如 讀取使用者詳細資料並顯示 明顯好於 串連資料庫,在使用者表執行查詢獲得指定id的使用者返回的控制代碼,擷取控制代碼遊標指向的行並轉換為數組,然後顯示該數組。後者不但很長,明顯不是人話,增加溝通成本。

總結:無論是對象還是函數,都是一種代碼的組織形式,其目的是提高代碼的可讀性、使其易於維護。不同的人由于思維習慣的不同,其代碼的組織形式可能不同,但是通常都是自洽的。(白話的說法,有人喜歡3句話描繪一件事情,具體實現時每句話又會拆分為3句話的描述,有人喜歡5句話描繪一件事情,具體實現時每句話又會拆分為5句話的描述,那麼這兩個人定義的對象/函數必然不同,但最後會得到相同的結果。)

常見的書本上的函數

f(x)=x+1;

更改到代碼

function f(x){    return x+1;}

如果還不理解,那初中就白上了

1.函數是一種映射關係,我們的輸入對應一種輸出(一般不強制限定為一種輸出),輸入可以為0。
2.函數是對可複用代碼的封裝。我麼寫的一段代碼塊,根據它的可複用性,去選擇封裝代碼還是不封裝代碼,封裝好了,就可以稱之為函數。
3.函數是對編程的IPO模式的細節的隱藏。我們進行編程,肯定會遵循IPO模式,即輸入-處理-輸出。我們隱藏其中的處理過程時,只需要測試好輸入和輸出,就可以說封裝了一個函數。
4.函數內部是組織好了的代碼塊。
總而言之,函數是一種封裝了可複用代碼的具有I/O映射關係的程式碼群組織形式

謝邀。參考 wikipedia

In different programming languages, a subroutine may be called a procedure, a function, a routine, a method, or a subprogram. In computer programming, a subroutine is a sequence of program instructions that perform a specific task, packaged as a unit.

函數是子常式的別名。子常式是一段執行特定任務的程式操作,以封裝好的單元形式存在。

通俗地說,函數是一段小程式,指定一定的參數,執行一段對參數或外部環境有影響的操作,並可選地返回一個值。

好處?自然是 D.R.Y(DONT REPEAT YOURSELF)了。它簡化了相似性代碼的書寫,同時也使程式模組化,易於維護。

(這裡的函數和數學裡的函數還是不一樣的好伐→_→→_→→_→→_→)

函數就是實現某種功能的程式碼片段的封裝,比如: sum()函數,就是求和,求和就是功能,用
關鍵詞 function 包起來的代碼塊或者片段,代碼函數具體的代碼,你不用知道,因為作者已經
給你封裝好了,你只需要調用即可,sum(1,2) 的結果是3,你立即知道了結果,但你不用知道函數內部
的如何計算的

function sum($a=0,$b=0){    return $a+$b;}

初中數學裡的函數,你理解不?

一樣一樣的。

我覺得只要理解函數是什麼作用即可,而不用過深的去瞭解函數這個概念本身!

因為程式語言中的“函數”本身也是一種封裝,需要解譯器統一對函數文法進行解析!

和你自己封裝了一個函數給N個程式複用是一樣的,沒有太多的本質區別。

如果還不知道作用,你學習一門新的程式語言要列印hello world的時候,你發現程式語言沒有給你封裝一個叫做列印的函數,我不知道你當時是一種什麼編程體驗?

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.