函數(shù)的聲明方式
A.基本語法? ? ? function 關(guān)鍵字
function 函數(shù)名([參數(shù)1],[參數(shù)2]....){
函數(shù)體
[retrun] //返回值
}
B.字面量定義的形式(匿名函數(shù))
var 變量=function ([參數(shù)1],[參數(shù)2]....){
函數(shù)體
[retrun] //返回值
}
C.以對象的形式來聲明new 關(guān)鍵字。
var 變量=new Function([參數(shù)1],[參數(shù)2]...,"函數(shù)體");
定義函數(shù)的方式
一、函數(shù)聲明(function關(guān)鍵字)
二、函數(shù)表達式 ( 匿名函數(shù))
函數(shù)聲明提升
關(guān)于函數(shù)聲明,它的一個重要特征就是函數(shù)聲明提升,
意思是在執(zhí)行代碼之前會先讀取函數(shù)聲明,這就意味著可以
把函數(shù)聲明放在調(diào)用它的語句后面。
show();
function show(){
alert(“hello world”)
}
這個不會拋出錯誤,因為在代碼執(zhí)行之前會先讀取函數(shù)聲明
函數(shù)表達式
var? foo=function(arg0,arg1,arg2){
//函數(shù)體
};
創(chuàng)建一個函數(shù)并將它賦值給變量foo,這種情況下創(chuàng)建的函數(shù)叫匿名函數(shù),因為function關(guān)鍵字后面沒有標識符。
匿名函數(shù)就是沒有實際名字的函數(shù)
(匿名函數(shù)有時候也叫拉姆達函數(shù))
匿名函數(shù)的調(diào)用
通過括號來調(diào)用
– 變量名()
自調(diào)用
– (function (){})()
(+ - ! ~ ())
要調(diào)用一個函數(shù),我們必須要有方法定位它,引用它。所以,我們會需要幫它找一個名字。例如:
var abc=function(x,y){
return x+y;
}
alert(abc(2,3)); // "5"
上面的操作其實就等于換個方式去定義函數(shù),這種用法是我們比較頻繁遇到的。例如我們在設(shè)定一個DOM元素事件處理函數(shù)的時候,我們通常都不會為他們定名字,而是賦予它的對應事件引用一個匿名函數(shù)。
對匿名函數(shù)的調(diào)用其實還有一種做法,也就是我們看到的jQuery 片段—— 使用() 將匿名函數(shù)括起來,然后后面再加一對小括號(包含參數(shù)列表)。我們再看一下以下例子:
alert((function(x,y){return x+y;})(2,3));// "5"
使用匿名函數(shù)的情況
語法:function(){函數(shù)體;}
因為是匿名函數(shù),所以一般也不會有參數(shù)傳給他。
為什么要創(chuàng)建匿名函數(shù)呢?在什么情況下會使用到匿名函數(shù)。匿名函數(shù)主要有兩種常用的場景,一是回調(diào)函數(shù),二是直接執(zhí)行函數(shù)。
回調(diào)函數(shù),像ajax的異步操作,就需要回調(diào)函數(shù)。
你不是一個人,有人在等你,為了她,一定要不停的奔跑,不停的進步,不停的成長