最後更新:2016-06-06
來源:互聯網
上載者: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的時候,你發現程式語言沒有給你封裝一個叫做列印的函數,我不知道你當時是一種什麼編程體驗?