匿名函數
顧名思義就是沒有名字的函數
下面說一下它的兩個用途:
- 你可以把匿名函數作為一個參數傳遞給其它函數。
- 你可以定義一個匿名函數並立馬執行它
回調函數
因為函數就跟那些可以分配給變量的數據一樣,它可以定義,刪除,拷貝,所以也可以作為參數傳遞給函數,簡單來說回調函數就是把函數作為參數來用
看一下下面的例子,也是匿名函數的用途之一
<script type="text/javascript">
function one() { return 1; }
function two() { return 2; }
function sum(a, b) { return a() + b(); }
document.write("把函數當作參數:" + sum(one, two) + '<br/>');
document.write("把匿名函數當作參數:" + sum(one, function () { return 1; }) + '<br/>');
</script>
自調用函數
目前為止,我們已經討論了把匿名函數當成回調函數來使用,現在讓我們匿名函數的另一個用途——定義后馬上調用,下面是一個例子:
<script type="text/javascript">
(
function () {
function hello() { return 2; }
document.write(hello());
}
)()
var name = "Jeff";
//帶參數的
(
function (param) {
document.write(param);
}
)(name)
</script>
- 使用自調用的匿名函數的理由是做一些工作但不需要創建一些全局的變量。
- 一個缺點是,很明顯就是你不能調用這個函數2 次(除非你把它放在一個循環或者其它函數里面)。這使得自調用的匿名函數非常適合做一次性或者初始化性質的工作。