函數(shù)使用function關(guān)鍵字來(lái)定義, 它可以用在函數(shù)定義表達(dá)式或者函數(shù)聲明語(yǔ)句。 兩種形式中, 函數(shù)定義都從function關(guān)鍵字開(kāi)始, 其后跟隨這些組成部分:
- 函數(shù)名稱標(biāo)識(shí)符
- 一對(duì)圓括號(hào)。 其中包含由0個(gè)或多個(gè)逗號(hào)隔開(kāi)的標(biāo)識(shí)符組成的列表。 這些標(biāo)識(shí)符是函數(shù)的參數(shù)名稱, 它們就像函數(shù)體中的局部變量一樣。
- 一對(duì)花括號(hào)。 其中包含0條或多條JavaScript語(yǔ)句。 這些語(yǔ)句構(gòu)成函數(shù)體: 一旦調(diào)用函數(shù),就會(huì)執(zhí)行這些語(yǔ)句。
函數(shù)定義表達(dá)式
函數(shù)定義表達(dá)式也可以稱作“函數(shù)直接量”。 對(duì)函數(shù)定義表達(dá)式來(lái)說(shuō), 函數(shù)名稱是可選的, 這個(gè)名字如果存在, 該名字 只存在于函數(shù)體中 , 并指代該函數(shù)對(duì)象本身。例:
var fn = function(x) {return x * x;};
var f = function f(x) {return x * x;};
函數(shù)聲明語(yǔ)句
函數(shù)名稱是函數(shù)聲明語(yǔ)句必須的部分, 一條函數(shù)聲明語(yǔ)句實(shí)際上聲明了一個(gè)變量, 變量指向函數(shù)對(duì)象。
function fn(x) {return x * x;}
聲明提前
函數(shù)聲明語(yǔ)句會(huì)被提前到腳本或函數(shù)的頂部。 使用var的時(shí)候,只有變量聲明提前, 變量的初始化代碼仍然在原來(lái)的位置。 然而使用函數(shù)聲明語(yǔ)句, 函數(shù)名稱和函數(shù)體均提前。 也就是說(shuō), 可以在聲明一個(gè)函數(shù)之前調(diào)用它。
以表達(dá)式定義的函數(shù)就另當(dāng)別論了, 要使用一個(gè)以表達(dá)式方式定義的函數(shù), 必須把它賦值給一個(gè)變量, 然而就像上面說(shuō)的, var 變量聲明雖然可以提前, 但變量賦值是不會(huì)提前的, 所以, 以表達(dá)式方式定義的函數(shù)在定義之前無(wú)法調(diào)用。
return語(yǔ)句
多數(shù)函數(shù)包含一條return語(yǔ)句。 return語(yǔ)句導(dǎo)致函數(shù)停止執(zhí)行, 并返回它的表達(dá)式(如果有的話)的值給調(diào)用者。如果return語(yǔ)句沒(méi)有一個(gè)與之相關(guān)的表達(dá)式, 則返回undefined值。 如果一個(gè)函數(shù)不包含return語(yǔ)句, 那它執(zhí)行函數(shù)體中每條語(yǔ)句, 并返回undefined給調(diào)用者。
函數(shù)嵌套
函數(shù)聲明語(yǔ)句并非真正的語(yǔ)句,ECMAScript規(guī)范只允許它們作為頂級(jí)語(yǔ)句。 它們可以出現(xiàn)在全局代碼, 或者嵌套在其他函數(shù)中, 但它們不能出現(xiàn)在循環(huán)、條件判斷, 或者try/catch/finally以及width語(yǔ)句中。
函數(shù)定義表達(dá)式可以出現(xiàn)在JavaScript代碼的任何地方。
相關(guān)題目
題1:
alert(a in window);
var a = 10;
題2:
function f(){
alert(1);
}
f();
function f(){
alert(10);
}
f();
題3:
alert(a);
var a = 1;
function a() {}
alert(a);
題4:
var a = 1;
var b = function a(){
alert(a);
};
alert(a);
b();
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
