轉
什麼是函式:
①函式是重複計算使之簡化,修改常量方便。
②函式是數學中的抽象概念,我們看到乙個符號就知道其中的計算,
100∑n
n=1
以上這個符號代表1到100的相加,看到它理解成加和,而不是很簡單的加法運算;我們可以省了複雜的計算過程,直接思考高層次的邏輯。
函式是最基本的一種**抽象方式。
首先需要清楚的了解一點:所有函式都是物件。
以下函式中
obj()函式是乙個函式物件,而函式名
obj可以視為指向該函式的變數。
比如我們定義乙個函式可以這樣寫:
function obj(a);
還可以這樣寫:
var obj= function(a)
函式內部的語句在執行時,一旦執行到return時,函式執行完畢,並將結果返回。如果沒有return語句,函式執行完畢會返回結果,只是結果是undefined。
小心你的return語句:
js語言有乙個在行末自動新增分號機制,
functionobj(a); 與
functionobj(a);
返回的結果是不一樣的。
函式自呼叫:
所謂的函式自呼叫,就是在定義函式的時候直接呼叫。
比如:var result =function (x)(3);
這段**的本質是:
var plusone =function (x);
var result = plusone(3);
這樣寫就清楚了,我們先定義乙個函式plusone ,然後呼叫它,並提供實參3.
而上面的自呼叫的寫法就是把這兩件事放在一起完成了。
通過function (x)這一段**,相當於寫了乙個函式字面量(字面量詳見物件導向的三種建立方式),
而後面緊接著的(3)就是給這個函式字面量乙個引數來呼叫它。換句話說,所有函式
類物件,不論是乙個現場定義的匿名函式,還是乙個之前定義的有名字的函式,他們不加
括號的時候都代表了這個函式物件本身,而加括號代表了呼叫這個函式,也就是這個函式
的return物件。
返回函式的函式:
剛才的例子:
var plusone =function (x);
var result = plusone(3);
這裡的函式plusone返回引數+1以後的值。
plusone是第乙個真正被呼叫的函式,通過plusone加括號,我們可以得到了
plusone函式return的物件,也就是realfunction函式,再通過plusone()(3)
我們得到了realfunction這個函式傳了引數3以後的return值,也就是4。(注意
對於最後一行來說,realfunction這個名字已經不存在了);
我們可以把x放在外面:
這裡我們相當於先把3告訴plusone函式,然後由realfunction負責把plusone活得的引數
加一,並返回。所以我們需要在第乙個括號裡面傳3,第二個括號為空。
利用上面所說的返回函式的函式。可以做一些有趣的事情。
把乙個動作分成兩步完成還可以實現一定的私密性。想象一下,我們需要兩個密碼開啟一把鎖,但是我們又不希望其中任何乙個人知道另乙個人的密碼。
返回函式的函式
廖雪峰python課程裡的 作業的兩種實現方法 1.def createcounter a 0 def counter nonlocal a nonlocal 函式是 引用外部函式 的函式 a 1 a 1等同於a a 1 return a return counter countera create...
自呼叫函式
js自執行函式,聽到這個名字,首先會聯想到函式。接下來,我來定義乙個函式 12 3functionaaa a,b 定義了乙個名為aaa的函式,在裡面可以計算兩個數的和。如果想執行它,就必須得呼叫它,並且還得給它傳參 1varaa aaa 1,2 這樣就實現了乙個函式的定義與呼叫,通過console....
返回函式,匿名函式
1.返回函式 求和的函式,可以不返回求和的結果,而是返回求和的函式 def calc sum args def sum ax 0 for n in args ax ax n return ax return sum 2.匿名函式 以map 函式為例,計算f x x2時,除了定義乙個f x 的函式外,...