Javascript中的方法和匿名方法實(shí)例詳解
本文實(shí)例講述了Javascript中的方法和匿名方法。分享給大家供大家參考。具體分析如下:
Javascript方法(函數(shù))
聲明函數(shù)
以function開(kāi)頭,后跟函數(shù)名,與C#、java不同,Javascript不需要聲明返回值類(lèi)型、參數(shù)類(lèi)型。沒(méi)有返回值就是undefined。
舉個(gè)例子更清楚:
無(wú)參數(shù)無(wú)返回值的方法:
function f1(){ alert('這是一個(gè)方法'); } f1();//調(diào)用方法
無(wú)參數(shù)有返回值的方法:
function f2(){ return 100; } var result=f2();//聲明一個(gè)變量,接收f(shuō)1()中的返回值 alert(result);//100
有參數(shù)有返回值的方法:
function f3(n1,n2){ return n1+n2; } var result=f3(20,30); alert(result);//50
注意1:
先看例子:
function f1(){ alert('這是一個(gè)方法'); } alert(f1());//彈出”這是一個(gè)方法”后,還會(huì)顯示undefined
原因:js中,變量沒(méi)有賦值,就是undefined;該栗中f1()沒(méi)有返回值,那么就是一個(gè)未知的值(undefined),這里未知的變量放入alert(),當(dāng)然彈出的就是undefined
注意2:
alert(f1);//不寫(xiě)括號(hào),會(huì)將f1整個(gè)代碼以字符串形式顯示出來(lái): function f1(){ alert('這是一個(gè)方法'); }
JavaScript中沒(méi)有方法重載
只調(diào)用最新定義的方法:
function f1(n1,n2){ alert(n1+n2); } function f1(n1,n2){ alert(n1-n2); } f1(10,2);//8
結(jié)論:無(wú)論在哪里調(diào)用,都只調(diào)用最新定義的方法。
注意:數(shù)字+undefined=undefined
function f1(n1,n2,n3){ alert(n1-n2+n3); } f1(10,2); //NaN,因?yàn)闆](méi)有給n3傳值,n3就是undefined, //數(shù)字加上undefined還是undefined
以上結(jié)論:Javascript中沒(méi)有方法重載
定義方法時(shí)注意:
自定義函數(shù)名不要和內(nèi)置方法重名:
不要和js內(nèi)置、dom內(nèi)置方法重名,比如selectAll、focus等函數(shù)名不要用。
不要與系統(tǒng)函數(shù)重名。(在單擊事件中調(diào)用自己定義的focus方法,有問(wèn)題。與系統(tǒng)的focus()方法重名了)
書(shū)寫(xiě)規(guī)則括號(hào)注意:
一般在js中編寫(xiě)大括號(hào)都是直接跟在后面
function f1(){ return { age:100}; } var s=f1(); alert(s.age); //undefined。s結(jié)果是undefined,undefined.age必然還是undefined
匿名方法(用的非常多)
為什么推薦用匿名方法?
1、有一個(gè)1.js中有個(gè)方法function aa(){alert{'我挺帥了'}}
2、有一個(gè)2.js中有個(gè)方法function aa(){alert{'我越來(lái)越帥了'}}
3、將1.js和2.js依次導(dǎo)入到index.html中,調(diào)用aa();結(jié)果顯示:我越來(lái)越帥了。
結(jié)論:2.js中的aa()方法會(huì)覆蓋1.js中的aa()
怎么辦?不再指定方法名,使用匿名方法
先看一個(gè)將匿名方法賦給變量例子:
var ff=function(n1,n2){ return n1+n2; }; alert(ff(20,30));//50
一行寫(xiě)完匿名方法:
小案例:1:
var x=1; var y=0; var z=0; var add=function (n){n=n+1;return n}; y=add(x);//結(jié)果是2,先調(diào)用上面add add=function(n){n=n+3;return n;}; z=add(x);//結(jié)果是4,調(diào)用上面臨近的這個(gè)add alert(y+','+z);//2,4
小案例2:
function aa() { alert("aaa"); return function(){alert("bbb");}; } alert(aa);//不寫(xiě)括號(hào),會(huì)將aa方法的整個(gè)代碼顯示出來(lái) alert(aa());//aaa,function(){alert("bbb");}; aaa就不解釋了,后面那一串是作為aa()的返回值顯示 alert(aa()());//aaa,bbb,undefined //下面分解上面這句進(jìn)行解釋 var s=aa();//aaa alert(s());//s()就是function(){alert("bbb");};首先彈出bbb,其次該方法沒(méi)有返回值,故彈出undefined
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
bootstrap制作jsp頁(yè)面(根據(jù)值讓table顯示選中)
這篇文章主要為大家詳細(xì)介紹了bootstrap做的jsp頁(yè)面,根據(jù)值讓table顯示選中,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Javascript Tab 導(dǎo)航插件 (23個(gè))
實(shí)現(xiàn)tab頁(yè)很多方法,有一些是用純CSS實(shí)現(xiàn),其他大多數(shù)是基于jquery、mootools或者其他js框架實(shí)現(xiàn),既然有這么多可以拿來(lái)即用的插件,又何苦重復(fù)造輪子。2009-06-06騰訊的ip接口 方便獲取當(dāng)前用戶(hù)的ip地理位置
在論壇中閑逛,無(wú)意中發(fā)現(xiàn)騰訊的ip接口。還是挺有意思的。大家可以利用下,這個(gè)IP接口所查詢(xún)到的還是比較準(zhǔn)確,我發(fā)給幾個(gè)朋友測(cè)試了一下都是正確的,畢竟是騰訊的東西。2010-11-11談?wù)凧avaScript中瀏覽器兼容問(wèn)題的寫(xiě)法小議
本篇文章主要介紹了JavaScript中瀏覽器兼容問(wèn)題的寫(xiě)法小議,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12JS實(shí)現(xiàn)添加,替換,刪除節(jié)點(diǎn)元素的方法
這篇文章主要介紹了JS實(shí)現(xiàn)添加,替換,刪除節(jié)點(diǎn)元素的方法,實(shí)例分析了javascript針對(duì)節(jié)點(diǎn)元素的替換、刪除及常用的幾種添加技巧,需要的朋友可以參考下2016-06-06詳解小程序原生使用ES7 async/await語(yǔ)法
這篇文章主要介紹了詳解小程序原生使用ES7 async/await語(yǔ)法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08給所有的超級(jí)練級(jí)都加上onmousemove時(shí)間的js代碼
給所有的超級(jí)練級(jí)都加上onmousemove時(shí)間的js代碼...2007-08-08微信小程序?qū)崿F(xiàn)電影App導(dǎo)航和輪播
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)電影App導(dǎo)航和輪播,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11