1. 函數(shù)的定義和調(diào)用
在JavaScript中,定義函數(shù)最常用的方法就是調(diào)用function語句。該語句是由function關鍵字構成的,它后面緊跟的是:
Ø 函數(shù)名
Ø 一個用括號的參數(shù)列表,參數(shù)是可選的,參數(shù)是用逗號分隔開
Ø 包括在大括號中的函數(shù)體
使用函數(shù)需要注意的幾個地方:
Ø 在函數(shù)體中如果有return語句,它返回一個值;如果沒有的話,它返回undefined
Ø JavaScript不會檢測函數(shù)參數(shù)個數(shù)是否正確,如果傳遞實參多于形參,多余的實參將沒忽略;如果少于的話,那么沒有被傳遞參數(shù)的形參被賦于undefined,在這種情況一般程序運行將出錯
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
運行結(jié)果:
ddxkj
undefined
aaa
ccc
aaa
ccc
aaa
undefined
1.1. 嵌套的函數(shù)
JavaScript 1.2和ECMAScript v3允許一個函數(shù)定義可以出現(xiàn)在另個函數(shù)中,也就是函數(shù)的嵌套。需要注意的是,ECMAScript v3不允許函數(shù)定義任意出現(xiàn),它們?nèi)匀槐幌拗圃陧攲尤执a和頂層函數(shù)代碼中,這意味著函數(shù)定義不能出現(xiàn)在循環(huán)和條件語句中。例如:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
運行結(jié)果:
10000
1.2. Function()構造函數(shù)
在ECMAScript v1和JavaScript 1.1中,允許使用Function()和new動態(tài)定義一個函數(shù)。例如:var f = new Function("x", "y", "return x*y;");
該行代碼幾乎等價于:function f(x,y){return x*y;}
Function()構造函數(shù)可以接受任意多個字符串參數(shù),最后一個參數(shù)就是函數(shù)體,可以包含任何JavsScrpt語句,每行語句之間使用;隔開。如果說函數(shù)沒有參數(shù),只需一個函數(shù)體的字符串就可以了。
有時時Function()構造函數(shù)也被稱為匿名函數(shù),是沒有定義了函數(shù)名。
Function()構造函數(shù)的用途:
Ø 動態(tài)創(chuàng)建和編譯一個函數(shù)。每調(diào)用一次函數(shù),F(xiàn)unction()構造函數(shù)都要編譯一次函數(shù),這也就成了一個缺點。因此,在循環(huán)或經(jīng)常被調(diào)用的函數(shù)中,一般不使用Function()構造函數(shù)。
Ø 將函數(shù)定義為JavaScript的表達式,而不是語句。不過在JavaScript中,如果想在表達式中定義一個函數(shù),而不是在語句,使用函數(shù)直接量會更方便。
1.3. 函數(shù)直接量
函數(shù)直接量的語法和function語句非常相似,只不過它被用作表達式,而不是語句,而且可以不指定函數(shù)名。和function語句、Function()構造函數(shù)一樣,函數(shù)直接量也是創(chuàng)建函數(shù)的方式之一。如:
|
新聞熱點
疑難解答
圖片精選