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

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