- HTML5權(quán)威指南
- (美)Adam Freeman
- 836字
- 2020-01-10 15:29:18
5.3 定義和使用函數(shù)
如果像代碼清單5-2中那樣在script元素中直接定義語句,那么瀏覽器一遇到這些語句就會執(zhí)行它們。也可以把幾條語句包裝在一個函數(shù)中,瀏覽器只有在遇到一條調(diào)用該函數(shù)的語句時才會執(zhí)行它。如代碼清單5-3所示。
代碼清單5-3 定義JavaScript函數(shù)
<! DOCTYPE HTML> <html> <head> <title>Example</title> </head> <body> <script type="text/javascript"> function myFunc() { document.writeln("This is a statement"); }; myFunc(); </script> </body> </html>
函數(shù)所含語句被包圍在一對大括號({和})之間,稱為代碼塊。這個代碼清單定義了一個名為myFunc的函數(shù),其代碼塊中只含有一條語句。JavaScript是區(qū)分大小寫的語言,因此function這個關(guān)鍵字必須小寫。只有在瀏覽器遇到下面這樣一條調(diào)用myFunc函數(shù)的語句時,該函數(shù)中的語句才會執(zhí)行。
myFunc();
這個例子沒什么特別的用處,因為在函數(shù)定義之后就立即調(diào)用了它。本章后面講到事件的時候,所用例子中的函數(shù)要有用得多。
5.3.1 定義帶參數(shù)的函數(shù)
與大多數(shù)語言一樣,JavaScript中也可以為函數(shù)定義參數(shù),如代碼清單5-4所示。
代碼清單5-4 定義帶參數(shù)的函數(shù)
<! DOCTYPE HTML> <html> <head> <title>Example</title> </head> <body> <script type="text/javascript"> function myFunc(name, weather) { document.writeln("Hello " + name + "."); document.writeln("It is " + weather + " today"); }; myFunc("Adam", "sunny"); </script> </body> </html>
這里為myFunc函數(shù)添加了兩個參數(shù):name和weather。JavaScript是門弱類型語言,所以定義函數(shù)的時候不必聲明參數(shù)的數(shù)據(jù)類型。本章稍后講JavaScript變量的時候會回頭解釋弱類型的事情。調(diào)用帶參數(shù)的函數(shù)時要像這樣提供相應(yīng)的值作為參數(shù):
myFunc("Adam", "sunny");
這個代碼清單的輸出結(jié)果如下:
Hello Adam. It is sunny today
調(diào)用函數(shù)時提供的參數(shù)數(shù)目不必與函數(shù)定義中的參數(shù)數(shù)目相同。如果提供的參數(shù)值更少,那么所有未提供值的參數(shù)的值均為undefined。如果提供的參數(shù)值更多,那么多出的值會被忽略。其結(jié)果是,要想定義兩個同名但參數(shù)數(shù)目不同的函數(shù),然后讓JavaScript根據(jù)調(diào)用函數(shù)時提供的參數(shù)值數(shù)目確定所調(diào)用的函數(shù)是不可能的。要是定義了兩個同名的函數(shù),那么第二個定義將會取代第一個。
5.3.2 定義會返回結(jié)果的函數(shù)
可以用return關(guān)鍵字從函數(shù)中返回結(jié)果,代碼清單5-5示范了一個這樣的函數(shù)。
代碼清單5-5 從函數(shù)中返回結(jié)果
<! DOCTYPE HTML> <html> <head> <title>Example</title> </head> <body> <script type="text/javascript"> function myFunc(name) { return ("Hello " + name + "."); }; document.writeln(myFunc("Adam")); </script> </body> </html>
本例中的函數(shù)定義了一個參數(shù)并用它生成一個簡單的結(jié)果。腳本中的最后一條語句調(diào)用了這個函數(shù)并將結(jié)果作為參數(shù)傳遞給document.writeln函數(shù)。如下所示:
document.writeln(myFunc("Adam"));
注意,定義這個函數(shù)時不用聲明它會返回結(jié)果,也不用聲明結(jié)果的數(shù)據(jù)類型。代碼清單的輸出結(jié)果如下所示:
Hello Adam.
- 自己動手實現(xiàn)Lua:虛擬機、編譯器和標準庫
- x86匯編語言:從實模式到保護模式(第2版)
- Linux網(wǎng)絡(luò)程序設(shè)計:基于龍芯平臺
- Easy Web Development with WaveMaker
- JavaScript入門經(jīng)典
- 程序設(shè)計基礎(chǔ)教程:C語言
- Terraform:多云、混合云環(huán)境下實現(xiàn)基礎(chǔ)設(shè)施即代碼(第2版)
- 智能搜索和推薦系統(tǒng):原理、算法與應(yīng)用
- 零基礎(chǔ)學(xué)C語言程序設(shè)計
- Kubernetes進階實戰(zhàn)
- Getting Started with Polymer
- RESTful Web Clients:基于超媒體的可復(fù)用客戶端
- Mastering Bootstrap 4
- 深入理解Zabbix監(jiān)控系統(tǒng)
- 跟著迪哥學(xué)Python數(shù)據(jù)分析與機器學(xué)習(xí)實戰(zhàn)