官术网_书友最值得收藏!

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.
主站蜘蛛池模板: 龙山县| 桐柏县| 应城市| 汝阳县| 宜君县| 右玉县| 安仁县| 呼伦贝尔市| 开封市| 金溪县| 太仆寺旗| 宣威市| 巍山| 迭部县| 上林县| 久治县| 武夷山市| 宜兰县| 理塘县| 鄂尔多斯市| 云南省| 运城市| 汝州市| 吉木萨尔县| 长垣县| 竹北市| 竹山县| 新化县| 嘉禾县| 吴忠市| 平安县| 上蔡县| 兴国县| 修水县| 庄河市| 临猗县| 襄垣县| 文成县| 舒兰市| 全南县| 新乡市|