js函式 函式自呼叫 返回函式的函式 (閉包)
阿新 • • 發佈:2019-01-10
轉 http://blog.sina.com.cn/s/blog_8f9d58d50102w331.html
什麼是函式: ①函式是重複計算使之簡化,修改常量方便。 ②函式是數學中的抽象概念,我們看到一個符號就知道其中的計算,100
∑n
n=1 以上這個符號代表1到100的相加,看到它理解成加和,而不是很簡單的加法運算;我們可以省了複雜的計算過程,直接思考高層次的邏輯。 函式是最基本的一種程式碼抽象方式。 首先需要清楚的瞭解一點:所有函式都是物件。 以下函式中obj()函式是一個函式物件,而函式名obj可以視為指向該函式的變數。 比如我們定義一個函式可以這樣寫: function obj(a){ console.log(a) }; 還可以這樣寫: var obj= function(a){ console.log(a) } 函式內部的語句在執行時,一旦執行到returnplusOne是第一個真正被呼叫的函式,通過plusOne加括號,我們可以得到了 plusOne函式return的物件,也就是realFunction函式,再通過plusOne()(3) 我們得到了realFunction這個函式傳了引數3以後的return值,也就是4。(注意 對於最後一行來說,realFunction這個名字已經不存在了); 我們可以把x放在外面:
這裡我們相當於先把3告訴plusOne函式,然後由realFunction負責把plusOne活得的引數 加一,並返回。所以我們需要在第一個括號裡面傳3,第二個括號為空。 利用上面所說的返回函式的函式。可以做一些有趣的事情。
把一個動作分成兩步完成還可以實現一定的私密性。想象一下,我們需要兩個密碼開啟一把鎖,但是我們又不希望其中任何一個人知道另一個人的密碼。