js函式add(1)(2)(3)連續呼叫效果
本程式碼是在網上看到的,感覺挺有意思的,所以這裡就分享一下,並且做一下詳細介紹。
感覺這內碼表具有一定的實用價值,就算是沒有,其中的一些相關知識也是挺好的,感興趣的朋友可以參考一下。
如果要實現標題形式的呼叫方式可以實用類似如下程式碼:
[JavaScript] 純文字檢視 複製程式碼var add = function(a){ return function(b){ return function(c){ return a+b+c; }; }; }; console.log(add(1)(2)(3));
上面的程式碼確實實現了標題所示的呼叫方式,但是上面的一個最大問題就是太過於死板,呼叫的次數已經固定,如果是add(1)或者add(1)(2)(3)(4)都會有問題,不能夠正確計算結果,所以我們需要一個更為靈活的方案,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼function add(x){ var sum=x; var tmp=function(y){ sum=sum+y; return tmp; }; tmp.toString=function(){ return sum; }; return tmp; } console.log(add(1)(2)(3)); console.log(add(1)(2)(3)(4));
上面的程式碼實現了靈活的呼叫效果,下面介紹一下它的實現過程。
程式碼註釋:
(1).function add(x){},此函式實現了多次呼叫效果,引數就是要傳遞的數字。
(2).var sum=x,將x值賦值給sum。
(3).var tmp=function(y){
sum=sum+y;
return tmp;
},宣告一個函式,此函式實現了數字的累加效果,並且會返回函式本身。
(4).tmp.toString=function(){
return sum;
},重寫了tmp的toString()方法,目的是為了返回計算結果值,add(1)(2)(3)單純這樣獲取的是函式物件,而是用console.log()輸出add(1)(2)(3)的時候就會隱式呼叫toString()方法,於是就會獲取計算值。
(5).return tmp,返回函式。
相關文章
- add(1)(2)(3)...函式的實現函式
- js函式add(1)(2)(3)(4)...實現無限極累加原理解析JS函式
- JavaScript函式多個小括號連續呼叫JavaScript函式
- JS中函式內套函式的呼叫JS函式
- 7 函式的連續性函式
- (譯) 函式式 JS #2: 函式!函式JS
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- JS-非同步函式鏈式呼叫2(精簡版,推薦)JS非同步函式
- 8 連續函式的運算函式
- 編寫一個統計字串中每個連續字元個數的函式,如 `aaabbcccaabcd` 輸出為`3a2b3c2a1b1c1d`字串字元函式
- JS的五種函式呼叫方式JS函式
- 學習javaScript必知必會(1)~js介紹、函式、匿名函式、自呼叫函式、不定長引數JavaScriptJS函式
- 詳解 JS 中 new 呼叫函式原理JS函式
- js裡函式呼叫的四種模式JS函式模式
- JS函式的定義與呼叫方法JS函式
- js 使用 DotNetObjectReference 呼叫 c# 函式JSObjectC#函式
- (譯) 函式式 JS #1:簡介函式JS
- js正規表示式常用函式詳解(續)JS函式
- (譯)函式式 JS #3: 狀態函式JS
- 兄弟連go教程(15)函式 - 延遲呼叫Go函式
- 函式組:SPO1/2/3/4/5/6/8函式
- 函式極限與連續精簡版函式
- [譯] 理解JS的函式呼叫和‘this’的指向JS函式
- 兩個JS之間的函式互相呼叫JS函式
- Sanic add_route() 方法/函式函式
- Sanic add_task()方法/函式函式
- 數學分析 連續函式的孤立零點函式
- 01-函式、極限、連續性、導數函式
- 3-Python 函式(2)Python函式
- 子函式呼叫函式
- 函式呼叫棧函式
- 15.6 用多項式一致逼近連續函式函式
- 【翻譯】理解JS的函式呼叫和‘this’的指向JS函式
- js實現的iframe呼叫父頁面函式JS函式
- 不使用日期函式實現ADD_MONTHS函式功能函式
- airtestIDE 函式 2 內部呼叫函式 1 提示 not defined(選擇部分行只執行選中程式碼)AIIDE函式
- Sanic add_websocket_route() 方法/函式Web函式
- 用匯編實現add函式函式