首頁  >  文章  >  web前端  >  細說javascript函數從函數的構成開始_基礎知識

細說javascript函數從函數的構成開始_基礎知識

WBOY
WBOY原創
2016-05-16 17:23:511291瀏覽

javascript函數是比較奇怪的東西,接觸一段時間就會犯迷糊,搞不懂它到底是什麼了。你是否會因為有的javascript函數沒有名字而莫名其妙,是否會因為javascript函數的參數沒有類型而抓狂,是否為javascript函數以表達式的形態存在而徹底崩潰。正是因為有了這些煩惱才讓javascript函數值得我們尋味,我想從函數的構成來細說函數,這聽起來像是一句廢話,講任何東西當然是從構成去談,但是由於javascript函數你確實捉摸不了它的形態,因此這裡我是從一個標準函數的構成來細說。

1.函數名稱
在物件導向語言中,函數一般都有名稱,但javascript函數不一定,這類函數稱為匿名函數或函數直接量。它就像是一個表達式,然後這個表達式的左值就是可以用來呼叫函數,也可以儲存在變數中傳遞給其它的函數。它的好處就是不用每次呼叫的時候就建立新的物件。

複製程式碼 程式碼如下:

var f= function (x) {return x*x ;};
alert( f(6) );

以上範例就會在頁面上彈出視窗顯示36

2.參數
javascript函數的參數也比較神奇,調用javascript函數時如果填寫的參數和函數定義的參數不一致(例如個數不一致),程式不會出錯,有時甚至能調用成功,這對於java語言是無法想像的,但javascript函數可以做到。例如上面的例子,我們這樣呼叫:
複製程式碼 程式碼如下:

alert(f (6,7))

結果還是36。雖然這樣不會出錯,但是我們仍然想函數被正確的調用,並保證調用時和函數定義的參數數目一致。透過Arguments物件可以取得函數呼叫者的參數數目。修改上述程式碼。
複製程式碼 程式碼如下:

var f= function (x) {
if (arguments.length>1) {
return "out of range";
} else {
return x*x;
}
};
alert( f(6, 7) );

處理取得函數呼叫者的參數數目,也可以取得這些參數的值,將上述程式碼再進行一番修改:
複製程式碼 程式碼如下:

var f= function (x) {
if(arguments.length>1) {
return arguments[0]*arguments[1];

複製程式碼 程式碼如下

} else {
return x*x;
}
};
alert( f(6,7) );

你能猜出結果是多少嗎?對,是42。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn