日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

061_JavaScript闭包

發(fā)布時(shí)間:2025/4/17 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 061_JavaScript闭包 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 閉包(closure), 指的是函數(shù)可以使用函數(shù)之外定義的變量。

2. 簡單的閉包實(shí)例

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

var message = "hello world";function sayHelloWorld() {alert(message); }sayHelloWorld();

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

3. 復(fù)雜的閉包

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

var baseNum = 10;function addNum(num1, num2) {function doAdd() {return num1 + num2 + baseNum;}return doAdd(); }

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

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

4. 更為復(fù)雜的閉包

4.1. 代碼

<!DOCTYPE html> <html lang="zh-CN"><head><meta charset="utf-8" /><title>閉包</title></head><body><script type="text/javascript">var myCounter = (function () {var counter = 0;return {increase: function() {return counter += 1;}, decrease: function() {return counter -= 1;}, clear: function() { return counter = 0;}};})();document.write('counter = ' + myCounter.increase() + '<br />');document.write('counter = ' + myCounter.increase() + '<br />');document.write('counter = ' + myCounter.increase() + '<br />');document.write('counter = ' + myCounter.decrease() + '<br />');document.write('counter = ' + myCounter.clear() + '<br />');document.write('counter = ' + myCounter.increase() + '<br />');</script></body> </html>

4.2. 效果圖

4.3. 例子解釋

4.3.1. 變量myCounter的賦值是自調(diào)用函數(shù)的返回值。

4.3.2. 這個(gè)自調(diào)用函數(shù)只運(yùn)行一次。它設(shè)置計(jì)數(shù)器變量為零(0), 并返回對(duì)象。

4.3.3. 這樣myCounter成為了對(duì)象。最"精彩的"部分是它對(duì)象內(nèi)部的函數(shù)訪問父作用域中的計(jì)數(shù)器變量。

4.3.4. 閉包指的是有權(quán)訪問父作用域的變量, 即使在父函數(shù)關(guān)閉之后。它使函數(shù)擁有"私有"變量成為可能。

總結(jié)

以上是生活随笔為你收集整理的061_JavaScript闭包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。