日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

闭包作用域探究小例

發布時間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 闭包作用域探究小例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天一位網友問了一個閉包的問題,做了以下實驗如下:

<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>閉包作用域探究</title></head><body><script type="text/javascript">function a(){var i = 0;return function b(){return ++i;}}var c = a();document.write(c()+'<br/>');//1document.write(c()+'<br/>');//2document.write(c()+'<br/>');//3var d = a();document.write(d()+'<br/>');//1document.write(c()+'<br/>');//4</script></body> </html>

很多人把高級語言的垃圾回收機制用到對閉包的解釋中,我覺得如果從作用域的概念來理解閉包可能更容易一些,下面是我從作用域角度來解釋上面的實驗結果:

1、對于函數(function)我的理解是“你調不調用他都在那里,不離不棄”;

2、每個函數都是個孩子,每個孩子都有個家(就是函數作用域);

3、孩子可以用家里的東西(使用所屬作用域的變量和函數,就像 i ,當然可以在 i 所在的位置來定義一些函數供這位孩子b來調用);

4、每家的孩子都只能供這個家來使喚,比如讓這孩子叫爸爸(每個作用域,或者每個實體,就像例中的c和d都只能調用自己的b方法);

5、孩子如果打碎了家里的玻璃,那這家的玻璃就碎掉一塊,要是再打一次那就又碎掉一塊(每調用一次c的b方法,c的 i 就會改變一次);

6、家家有本難念的經,但是各念各的經(調用d 的 b方法改變的是d的 i 的值,不會對c 的 i 的值有影響);

7、每家的孩子在學校都代表這個家庭,但只是代表,除了這個孩子他背后有一個家庭在影響他,孩子的表現很大程度是受家庭環境影響的(當調用 c()時其實是調用a的一個實例(這里就是實例c)的b方法,所以c()的表現是受所在作用域的影響的)

?

?

轉載于:https://www.cnblogs.com/longze/archive/2013/05/24/3096527.html

總結

以上是生活随笔為你收集整理的闭包作用域探究小例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。