函數(shù)使用function關(guān)鍵字來定義, 它可以用在函數(shù)定義表達式或者函數(shù)聲明語句。 兩種形式中, 函數(shù)定義都從function關(guān)鍵字開始, 其后跟隨這些組成部分:
- 函數(shù)名稱標識符
- 一對圓括號。 其中包含由0個或多個逗號隔開的標識符組成的列表。 這些標識符是函數(shù)的參數(shù)名稱, 它們就像函數(shù)體中的局部變量一樣。
- 一對花括號。 其中包含0條或多條JavaScript語句。 這些語句構(gòu)成函數(shù)體: 一旦調(diào)用函數(shù),就會執(zhí)行這些語句。
函數(shù)定義表達式
函數(shù)定義表達式也可以稱作“函數(shù)直接量”。 對函數(shù)定義表達式來說, 函數(shù)名稱是可選的, 這個名字如果存在, 該名字 只存在于函數(shù)體中 , 并指代該函數(shù)對象本身。例:
var fn = function(x) {return x * x;};
var f = function f(x) {return x * x;};
函數(shù)聲明語句
函數(shù)名稱是函數(shù)聲明語句必須的部分, 一條函數(shù)聲明語句實際上聲明了一個變量, 變量指向函數(shù)對象。
function fn(x) {return x * x;}
聲明提前
函數(shù)聲明語句會被提前到腳本或函數(shù)的頂部。 使用var的時候,只有變量聲明提前, 變量的初始化代碼仍然在原來的位置。 然而使用函數(shù)聲明語句, 函數(shù)名稱和函數(shù)體均提前。 也就是說, 可以在聲明一個函數(shù)之前調(diào)用它。
以表達式定義的函數(shù)就另當別論了, 要使用一個以表達式方式定義的函數(shù), 必須把它賦值給一個變量, 然而就像上面說的, var 變量聲明雖然可以提前, 但變量賦值是不會提前的, 所以, 以表達式方式定義的函數(shù)在定義之前無法調(diào)用。
return語句
多數(shù)函數(shù)包含一條return語句。 return語句導致函數(shù)停止執(zhí)行, 并返回它的表達式(如果有的話)的值給調(diào)用者。如果return語句沒有一個與之相關(guān)的表達式, 則返回undefined值。 如果一個函數(shù)不包含return語句, 那它執(zhí)行函數(shù)體中每條語句, 并返回undefined給調(diào)用者。
函數(shù)嵌套
函數(shù)聲明語句并非真正的語句,ECMAScript規(guī)范只允許它們作為頂級語句。 它們可以出現(xiàn)在全局代碼, 或者嵌套在其他函數(shù)中, 但它們不能出現(xiàn)在循環(huán)、條件判斷, 或者try/catch/finally以及width語句中。
函數(shù)定義表達式可以出現(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ù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

