- 相關(guān)推薦
javascript函數到底是什么
javascript函數是一個(gè)比較奇怪的東西,接觸一段時(shí)間你就會(huì )犯迷糊,弄不明白它到底是什么了。你是否會(huì )因為有的javascript函數沒(méi)有名字而莫名其妙,是否會(huì )因為javascript函數的參數沒(méi)有類(lèi)型而抓狂,是否為javascript函數以表達式的形態(tài)存在而徹底崩潰。正是因為有了這些煩惱才讓javascript函數值得我們尋味,我想從函數的構成來(lái)細說(shuō)函數,這聽(tīng)起來(lái)像是一句廢話(huà),講任何東西當然是從構成去談,但是由于javascript函數你確實(shí)捉摸不了它的形態(tài),因此這里我是從一個(gè)標準函數的構成來(lái)細說(shuō)。
1.函數名
在面向對象語(yǔ)言中,函數一般都有名稱(chēng),但javascript函數不一定,這類(lèi)函數稱(chēng)為匿名函數或者函數直接量。它就像是一個(gè)表達式,然后這個(gè)表達式的左值即可以用來(lái)調用函數,也可以存儲在變量中傳遞給其它的函數。它的好處就是不用每次調用的時(shí)候創(chuàng )建新的對象。
復制代碼 代碼如下:
var f= function (x) {return x*x;};
alert( f(6) );
以上例子就會(huì )在頁(yè)面上彈出窗口顯示36
2.參數
javascript函數的參數也比較神奇,調用javascript函數時(shí)如果填寫(xiě)的參數和函數定義的參數不一致(例如個(gè)數不一致),程序不會(huì )出錯,有時(shí)甚至能調用成功,這對于java語(yǔ)言是無(wú)法想象的,但javascript函數可以做到。例如上面的例子,我們這樣調用:
復制代碼 代碼如下:
alert(f(6,7))
結果仍然是36。雖然這樣不會(huì )出錯,但是我們仍然想函數被正確的調用,保證調用時(shí)和函數定義的參數數目一致。通過(guò)Arguments對象可以獲取函數調用者的參數數目。修改上述代碼。
復制代碼 代碼如下:
var f= function (x) {
if(arguments.length>1) {
return "out of range";
} else {
return x*x;
}
};
alert( f(6,7) );
處理獲取函數調用者的參數數目,還可以獲取到這些參數的值,將上述代碼再進(jìn)行一番修改:
復制代碼 代碼如下:
var f= function (x) {
if(arguments.length>1) {
return arguments[0]*arguments[1];
復制代碼 代碼如下:
} else {
return x*x;
}
};
alert( f(6,7) );
你能猜出結果是多少嗎?對,是42。
【javascript函數到底是什么】相關(guān)文章:
Javascript函數的定義和用法分析08-15
JavaScript中push(),join() 函數實(shí)例詳解09-05
最常用的20個(gè)javascript方法函數09-10
javascript是什么意思10-08
JavaScript中常見(jiàn)的字符串操作函數及用法07-24
有關(guān)javascript實(shí)現的多個(gè)層切換效果通用函數示例10-07
領(lǐng)導到底是什么07-04