js函式 函式自呼叫 返回函式的函式 閉包

2021-08-09 19:26:24 字數 1993 閱讀 6332

什麼是函式:

①函式是重複計算使之簡化,修改常量方便。

②函式是數學中的抽象概念,我們看到乙個符號就知道其中的計算,

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 的函式外,...