2013-04-25 98 views
1

自從我不斷學習JavaScript並開始認真使用以來,我已經快半年了。 JS設置了c的語法和封樣等部位,動態類型,可選paramates等在JavaScript中返回函數的函數

語言功能,還是我沒有看到他的能力是:函數返回功能

function func(){ 
    return function(){ 
     .... 
     return result; 
    }; 
}; 


func()(); 

這很酷,我知道這是功能語言的正常功能,但我從來沒有在現實世界中使用過,我不知道我有沒有必要更多地使用這種方法,並在哪些情況下顯示出他的真正能力。

我也做了一個小例子jsFiddle

+0

'// HANDLE:$(一個DOMElement) }否則執行用於在第一和隨後的運行不同的動作的功能if(selector.nodeType)this.context = this [0] = selector; this.length = 1; 返回此; // HANDLE:$(function) //文檔準備好的快捷方式 } else if(jQuery.isFunction(selector)){ return rootjQuery.ready(selector); }' 當返回時,可以考慮返回一個函數還是進一步傳遞該函數的上下文? – 2013-04-25 07:47:02

回答

1

另一種使用情況:

function test() { 
    alert("the first call"); 
    test = function() { 
     alert("new function"); 
    } 
} 
+0

我認爲這可能是危險的代碼完整性 – 2013-04-25 07:50:13

+0

@BogdanVolosincu那麼它可以是非常有用的。例如,你想做一些初始化,但是你只想在第一次函數調用時完成。 – dfsq 2013-04-25 08:06:23

+0

這個答案可能是有趣的,但沒有解決這個問題,這是關於返回函數的函數。 – 2013-04-25 23:54:17

1

綁定事件時很有用。例如:

var element1 = document.getElementById('element1'); 
var element2 = document.getElementById('element2') 

element1.addEventListener('click', someEventHandler('action1')); 
element2.addEventListener('click', someEventHandler('action2')); 

function someEventHandler(act){ 
    return function(e){ 
     switch (act){ 
      case 'action1': 
       // do something; 
      break; 
      case 'action2': 
       // do other thing 
      break; 
     } 
    } 
} 

參見fiddle