五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 建站教程 > JavaScript 教程 > ECMAScript 閉包

ECMAScript 閉包

此節(jié)有 264 人學(xué)習(xí)過(guò)     參與評(píng)論

ECMAScript 最易讓人誤解的一點(diǎn)是,它支持閉包(closure)。

閉包,指的是詞法表示包括不被計(jì)算的變量的函數(shù),也就是說(shuō),函數(shù)可以使用函數(shù)之外定義的變量。

簡(jiǎn)單的閉包實(shí)例

在 ECMAScript 中使用全局變量是一個(gè)簡(jiǎn)單的閉包實(shí)例。請(qǐng)思考下面這段代碼:

var sMessage = "hello world";

function sayHelloWorld() {
  alert(sMessage);
}

sayHelloWorld();

在上面這段代碼中,腳本被載入內(nèi)存后,并沒(méi)有為函數(shù) sayHelloWorld() 計(jì)算變量 sMessage 的值。該函數(shù)捕獲 sMessage 的值只是為了以后的使用,也就是說(shuō),解釋程序知道在調(diào)用該函數(shù)時(shí)要檢查 sMessage 的值。sMessage 將在函數(shù)調(diào)用 sayHelloWorld() 時(shí)(最后一行)被賦值,顯示消息 "hello world"。

復(fù)雜的閉包實(shí)例

在一個(gè)函數(shù)中定義另一個(gè)會(huì)使閉包變得更加復(fù)雜。例如:

var iBaseNum = 10;

function addNum(iNum1, iNum2) {
  function doAdd() {
    return iNum1 + iNum2 + iBaseNum;
  }
  return doAdd();
}

這里,函數(shù) addNum() 包括函數(shù) doAdd() (閉包)。內(nèi)部函數(shù)是一個(gè)閉包,因?yàn)樗鼘@取外部函數(shù)的參數(shù) iNum1 和 iNum2 以及全局變量 iBaseNum 的值。 addNum() 的最后一步調(diào)用了 doAdd(),把兩個(gè)參數(shù)和全局變量相加,并返回它們的和。

這里要掌握的重要概念是,doAdd() 函數(shù)根本不接受參數(shù),它使用的值是從執(zhí)行環(huán)境中獲取的。

可以看到,閉包是 ECMAScript 中非常強(qiáng)大多用的一部分,可用于執(zhí)行復(fù)雜的計(jì)算。

提示:就像使用任何高級(jí)函數(shù)一樣,使用閉包要小心,因?yàn)樗鼈兛赡軙?huì)變得非常復(fù)雜。

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (264人查看0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------
JavaScript 教程目錄

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)