1.背景介紹
什么是Function Declaration(函數(shù)聲明)?
Function Declaration可以定義命名的函數(shù)變量矫夷,而無(wú)需給變量賦值。Function Declaration是一種獨(dú)立的結(jié)構(gòu)孵运,不能嵌
套在非功能模塊中。
就是使用function關(guān)鍵字聲明一個(gè)函數(shù)治笨,再指定一個(gè)函數(shù)名赤嚼,叫函數(shù)聲明
什么是Function Expression(函數(shù)表達(dá)式)?
Function Expression將函數(shù)定義為表達(dá)式語(yǔ)句(通常是變量賦值)的一部分更卒。通過(guò)Function Expression定義的函數(shù)可以
是命名的,也可以是匿名的俯萌。Function Expression不能以“function”開(kāi)頭果录。
使用function關(guān)鍵字聲明一個(gè)函數(shù)弱恒,但未給函數(shù)命名,最后將匿名函數(shù)賦予一個(gè)變量返弹,叫函數(shù)表達(dá)式
函數(shù)表達(dá)式存儲(chǔ)在變量后爪飘,變量也可作為一個(gè)函數(shù)使用:
var x = function (a, b) {return a * b};
alert= x(4, 3);
以上函數(shù)實(shí)際上是一個(gè) 匿名函數(shù)(函數(shù)沒(méi)有名稱)。
函數(shù)存儲(chǔ)在變量中默终,不需要函數(shù)名稱,通常通過(guò)變量名來(lái)調(diào)用穷蛹。
var x = function (a, b) {return a * b};
var z = x(4, 3);
alert= z;
2.知識(shí)剖析
//函數(shù)聲明
function funDeclaration(type){
return type==="Declaration";
}
//函數(shù)表達(dá)式
var funExpression = function(type){
return type==="Expression";
}
3.常見(jiàn)問(wèn)題
一肴熏、什么是JavaScript函數(shù)?
二蛙吏、兩者具體有哪些區(qū)別呢?
4.解決方案
一鸦做、JavaScript函數(shù)谓着。
函數(shù)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊。
JavaScript函數(shù)語(yǔ)法
函數(shù)就是包裹在花括號(hào)中的代碼塊治筒,使用了關(guān)鍵詞function:
function functionname()
{
執(zhí)行代碼
}
當(dāng)調(diào)用該函數(shù)時(shí)舷蒲,會(huì)執(zhí)行函數(shù)內(nèi)的代碼。
可以在某事件發(fā)生時(shí)直接調(diào)用函數(shù)(比如當(dāng)用戶點(diǎn)擊按鈕時(shí))堤框,并且可由JavaScript在任何位置進(jìn)行調(diào)用。
JavaScript對(duì)大小寫(xiě)敏感蜈抓。關(guān)鍵詞function必須是小寫(xiě)的,并且必須以與函數(shù)名稱相同的大小寫(xiě)來(lái)調(diào)用函數(shù)酬土。
調(diào)用帶參數(shù)的函數(shù),在調(diào)用函數(shù)時(shí)格带,您可以向其傳遞值叽唱,這些值被稱為參數(shù)。
這些參數(shù)可以在函數(shù)中使用棺亭。
您可以發(fā)送任意多的參數(shù),由逗號(hào)(,)分隔:
myFunction(argument1,argument2)
當(dāng)聲明函數(shù)時(shí)镶摘,把參數(shù)作為變量來(lái)聲明:
function myFunction(var1,var2)
{
代碼
}
點(diǎn)擊這個(gè)按鈕岳守,來(lái)調(diào)用帶參數(shù)的函數(shù)。
functionmyFunction(name,job){
alert("Welcome "+ name +", the "+ job);
}
二涝缝、函數(shù)聲明中函數(shù)名是必須的;函數(shù)表達(dá)式中則是可選的
//函數(shù)聲明
function sum(a, b) {
return a + b;
}
alert(sum(1, 2));
//函數(shù)表達(dá)式
var s = function sum(a, b) {
return a + b;
}
alert(s(1, 2));
var s = function(a, b) {
return a + b;
}
alert(s(1, 2));//以上兩種都可以
二拒逮、用函數(shù)聲明定義的函數(shù),函數(shù)可以在函數(shù)聲明之前調(diào)用,而用函數(shù)表達(dá)式定義的函數(shù)只能在聲明之后調(diào)用滩援。
//函數(shù)聲明
alert(sum(1, 2));//3
function sum(a, b) {
return a + b;
}
//函數(shù)表達(dá)式:發(fā)生錯(cuò)誤
try {
alert(s(1, 2));
var s = function sum(a, b) {
return a + b;
}
}
catch (e) {
alert("wrong!");
}
5.擴(kuò)展思考
使用function關(guān)鍵字聲明一個(gè)函數(shù)塔嬉,再指定一個(gè)函數(shù)名,叫函數(shù)聲明佣赖。
function fn(){……}
使用function關(guān)鍵字聲明一個(gè)函數(shù),但未給函數(shù)命名憎蛤,最后將匿名函數(shù)賦予一個(gè)變量,叫函數(shù)表達(dá)式萎胰。
var fn=function(){……}
使用function關(guān)鍵字聲明一個(gè)函數(shù)棚辽,但未給函數(shù)命名,這個(gè)又稱之為什么呢?是屬于以上兩種類型的哪一種屈藐?
function(){……}
匿名函數(shù)屬于函數(shù)表達(dá)式,匿名函數(shù)有很多作用搓扯,賦予一個(gè)變量則創(chuàng)建函數(shù)包归,賦予一個(gè)事件則成為事件處理程序或創(chuàng)建閉包等等.
6.參考文獻(xiàn)
參考一:函數(shù)聲明與函數(shù)表達(dá)式以及立即執(zhí)行函數(shù)的討論
參考二:雨落川下雪