DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> ECMAScript閉包定義
ECMAScript閉包定義
編輯:關於JavaScript     
ECMAScript 最易讓人誤解的一點是,它支持閉包(closure)。
閉包,指的是詞法表示包括不被計算的變量的函數,也就是說,函數可以使用函數之外定義的變量。

簡單的閉包實例
在 ECMAScript 中使用全局變量是一個簡單的閉包實例。請思考下面這段代碼:


var sMessage = "hello world";

function sayHelloWorld() {
alert(sMessage);
}

sayHelloWorld();


在上面這段代碼中,腳本被載入內存後,並沒有為函數 sayHelloWorld() 計算變量 sMessage 的值。該函數捕獲 sMessage 的值只是為了以後的使用,也就是說,解釋程序知道在調用該函數時要檢查 sMessage 的值。sMessage 將在函數調用 sayHelloWorld() 時(最後一行)被賦值,顯示消息 "hello world"。



復雜的閉包實例
在一個函數中定義另一個會使閉包變得更加復雜。例如:


var iBaseNum = 10;

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


這裡,函數 addNum() 包括函數 doAdd() (閉包)。內部函數是一個閉包,因為它將獲取外部函數的參數 iNum1 和 iNum2 以及全局變量 iBaseNum 的值。 addNum() 的最後一步調用了 doAdd(),把兩個參數和全局變量相加,並返回它們的和。

這裡要掌握的重要概念是,doAdd() 函數根本不接受參數,它使用的值是從執行環境中獲取的。
可以看到,閉包是 ECMAScript 中非常強大多用的一部分,可用於執行復雜的計算。

提示:就像使用任何高級函數一樣,使用閉包要小心,因為它們可能會變得非常復雜。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved