最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript高級(jí)程序設(shè)計(jì) 讀書(shū)筆記之八 Function類(lèi)及閉包

 更新時(shí)間:2012年02月27日 23:48:59   作者:  
Function類(lèi)及閉包,學(xué)習(xí)js的朋友可以參考下
Function類(lèi)

定義
  Function類(lèi)可以表示開(kāi)發(fā)者定義的任何函數(shù),用Function類(lèi)直接創(chuàng)建函數(shù)的語(yǔ)法如下:

var function_name=new Function(agrument1,agrument2,...,argumentN,function_body);
  每個(gè)argument都是一個(gè)參數(shù),最后一個(gè)參數(shù)是函數(shù)主體(要執(zhí)行的代碼)。

  示例:
復(fù)制代碼 代碼如下:

function sayHi(sName,sMessage){
alert("Hello "+sName+","+sMessage);
}

還可以如下定義它:
var sayHi=new Function("sName","sMessage","alert(\"Hello\"+sName+\",\"+sMessage);");
  注:盡管可用Function構(gòu)造函數(shù)創(chuàng)建函數(shù),但最好不要使用它,因?yàn)橛盟x函數(shù)比用傳統(tǒng)方式要慢得多。不過(guò),所有函數(shù)都應(yīng)看作是Function類(lèi)的實(shí)例。
屬性和方法
  因?yàn)楹瘮?shù)是引用類(lèi)型,所以它們也有屬性和方法,ECMAScript定義的屬性length聲明了函數(shù)期望的參數(shù)個(gè)數(shù),例如:
復(fù)制代碼 代碼如下:

function doAdd(iNum){
alert(iNum+10);
}
function sayHi(){
alert("Hi");
}
alert(doAdd.length);//outpus 1
alert(sayHi.length);//outpus 0

Function對(duì)象也有與所有對(duì)象共享的標(biāo)準(zhǔn)valueOf()方法和toString()方法,這兩個(gè)方法返回的都是函數(shù)的源代碼,在調(diào)試時(shí)尤其有用。
  例如:
復(fù)制代碼 代碼如下:

function doAdd(iNum){
alert(iNum+10);
}
alert(doAdd.toString());

這段代碼輸出了doAdd()函數(shù)的文本。
閉包
定義
  所謂閉包,是指詞法表示包括不必計(jì)算的變量的函數(shù),也就是說(shuō),該函數(shù)能使用函數(shù)外定義的變量。在ECMAScript中使用全局變量是一個(gè)簡(jiǎn)單的閉包實(shí)例。
  示例:
復(fù)制代碼 代碼如下:

var sMessage="Hello World";
function sayHelloWold(){
alert(sMessage);
}
sayHelloWorld();

在一個(gè)函數(shù)中定義另一個(gè)函數(shù)會(huì)使閉包變得更復(fù)雜,如:
復(fù)制代碼 代碼如下:

var iBaseNum=10;
function addNumbers(iNum1,iNum2){
function doAddtion(){
return iNum1+iNum2+iBaseNum;
}
return doAddtion();
}

這里函數(shù)addNumbers()包括函數(shù)doAddtion()(閉包)。內(nèi)部函數(shù)是個(gè)閉包,因?yàn)樗鼘@取外部函數(shù)的參數(shù)iNum1和iNum2以及全局變量iBaseNum的值。addNumbers()的最后一步調(diào)用了內(nèi)部函數(shù),把兩個(gè)參數(shù)和全局變量相加,并返回它們的和。這里要掌握的重要概念是doAddtion()函數(shù)根本不接受參數(shù),它使用的是從執(zhí)行環(huán)境中獲取的。
  可以看到,閉包是ECMAScript中非常強(qiáng)大多用的一部分,可以用于執(zhí)行復(fù)雜的計(jì)算。就像使用任何高級(jí)函數(shù)一樣,在使用閉包時(shí)要當(dāng)心,因?yàn)樗鼈兛赡軙?huì)變得非常復(fù)雜。
本文示例代碼
復(fù)制代碼 代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>《JavaScript高級(jí)程序設(shè)計(jì)》讀書(shū)筆記之八:Function類(lèi)及閉包</title>
<script type="text/javascript">
function doAdd(iNum){
alert(iNum+10);
}
function sayHi(){
alert("Hi");
}
function lengthProperty(){
alert(doAdd.length);
alert(sayHi.length);
}
function valueOfMethod(){
alert(doAdd.valueOf());
}
function toStringMethod(){
alert(doAdd.toString());
}
var sMessage="Hello World";
function sayHelloWorld(){
alert(sMessage);
}
function demoOne(){
sayHelloWorld();
}
var iBaseNum=10;
function addNumbers(iNum1,iNum2){
function doAddtion(){
return iNum1+iNum2+iBaseNum;
}
return doAddtion();
}
function demoTwo(){
alert(addNumbers(1,2));
}
</script>
</head>
<body>
<h1>Length:</h1>
<input type="button" onclick="lengthProperty()" value="LengthProperty"/>
<h1>valueOf()/toString():</h1>
<input type="button" onclick="valueOfMethod()" value="ValueOfMethod"/>
<input type="button" onclick="toStringMethod()" value="ToStringMethod"/>
<h1>閉包:</h1>
<input type="button" onclick="demoOne()" value="Demo One"/>
<input type="button" onclick="demoTwo()" value="Demo Two"/>
</body>

相關(guān)文章

  • jfreechart插件將數(shù)據(jù)展示成餅狀圖、柱狀圖和折線圖

    jfreechart插件將數(shù)據(jù)展示成餅狀圖、柱狀圖和折線圖

    閑暇之余,學(xué)習(xí)了一下jfreechart圖表生成,結(jié)合大蝦們的著作,小弟進(jìn)行了系統(tǒng)的總結(jié),真是獲益匪淺,這里推薦給小伙伴們,有需要的朋友可以參考下。
    2015-04-04
  • javascript 繪制矩形框

    javascript 繪制矩形框

    今天讀John Resig的Pro Javascript Techniques時(shí)候看到他書(shū)上給的一個(gè)關(guān)于drag and drop的例子,我做的第二件事就是js模擬用鼠標(biāo)拖出矩形框,代碼很簡(jiǎn)單
    2009-04-04
  • javascript設(shè)計(jì)模式 – 訪問(wèn)者模式原理與用法實(shí)例分析

    javascript設(shè)計(jì)模式 – 訪問(wèn)者模式原理與用法實(shí)例分析

    這篇文章主要介紹了javascript設(shè)計(jì)模式 – 訪問(wèn)者模式,結(jié)合實(shí)例形式分析了javascript訪問(wèn)者模式基本概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • javascript 樹(shù)形導(dǎo)航菜單實(shí)例代碼

    javascript 樹(shù)形導(dǎo)航菜單實(shí)例代碼

    本文章來(lái)給大家提供一款適用于網(wǎng)站后臺(tái)的使用的javascript 樹(shù)形導(dǎo)航菜單特效代碼,有需要了解的同學(xué)可以參考一下
    2013-08-08
  • uni-app 自定義底部導(dǎo)航欄的實(shí)現(xiàn)

    uni-app 自定義底部導(dǎo)航欄的實(shí)現(xiàn)

    這篇文章主要介紹了uni-app 自定義底部導(dǎo)航欄的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js實(shí)現(xiàn)商城星星評(píng)分的效果

    js實(shí)現(xiàn)商城星星評(píng)分的效果

    這篇文章主要介紹了js實(shí)現(xiàn)商城星星評(píng)分的效果,很多網(wǎng)站都有如下圖這樣的星星打分效果,今天就看下用js怎么實(shí)現(xiàn)打分效果,需要的朋友可以參考下
    2015-12-12
  • JS 特殊運(yùn)算符的使用

    JS 特殊運(yùn)算符的使用

    JavaScript中包含了一系列不常見(jiàn)但功能強(qiáng)大的特殊運(yùn)算符,如空值合并運(yùn)算符(??)、可選鏈運(yùn)算符(?.)等,這些運(yùn)算符在特定場(chǎng)景下極大地簡(jiǎn)化了代碼的復(fù)雜度,并提高了開(kāi)發(fā)效率,通過(guò)深入了解這些特殊運(yùn)算符,開(kāi)發(fā)者可以更加高效地處理各種數(shù)據(jù)和邏輯
    2024-09-09
  • javascript實(shí)現(xiàn)tab響應(yīng)式切換特效

    javascript實(shí)現(xiàn)tab響應(yīng)式切換特效

    這篇文章主要為大家介紹了javascript實(shí)現(xiàn)tab響應(yīng)式切換特效,以一個(gè)完整的實(shí)例對(duì)tab響應(yīng)式切換特效進(jìn)行詳細(xì)的分析,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 詳解瀏覽器緩存和webpack緩存配置

    詳解瀏覽器緩存和webpack緩存配置

    這篇文章主要介紹了瀏覽器緩存和webpack緩存配置,瀏覽器緩存分為兩種類(lèi)型,強(qiáng)緩存和協(xié)商緩存,具體內(nèi)容詳情大家參考下本文
    2018-07-07
  • layui 優(yōu)化button按鈕和彈出框的方法

    layui 優(yōu)化button按鈕和彈出框的方法

    今天小編就為大家分享一篇layui 優(yōu)化button按鈕和彈出框的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

天津市| 札达县| 武隆县| 平乐县| 遵义市| 石渠县| 昌宁县| 南郑县| 冀州市| 方城县| 铜梁县| 富阳市| 辛集市| 凌云县| 锦州市| 疏附县| 湘潭县| 密山市| 罗平县| 偃师市| 离岛区| 茂名市| 双江| 宜君县| 临湘市| 嘉义县| 上蔡县| 莎车县| 娄烦县| 瑞安市| 安乡县| 巴南区| 扎赉特旗| 延安市| 岐山县| 彭水| 凉城县| 乌拉特前旗| 建宁县| 承德县| 高平市|