1.閉包:函式在呼叫的時候會形成乙個私有的作用域,對內部的變數起到保護的作用,這就是閉包
2.變數的銷毀:
1.人為銷毀 var a=12; a=null;
2.自然銷毀 函式呼叫完成後,瀏覽器會自動銷毀函式內的變數;
2的案例:
function fn(){
var a=9
a++console.log(a)
fn()
fn()
fn()
3.閉包的優勢:
1.保護變數;
2.快取資料 (這是他的優勢,也是他的劣勢,函式呼叫完後會被銷毀,我們不能使用這個變數,閉包可以不讓他被銷毀,但也會影響瀏覽器的效能)
4.閉包的種類;
1.函式式閉包;
案例:function fn(){
var a=9;
function ff(){
a++console.log(a)
ff()
fn()
fn()
fn()
2.物件式閉包
function fn(){
a=45
var obj={
num:a
console.log(obj.num)
5.函式返回值的問題:
每個函式都有乙個返回值,如人為返回,return的什麼就是什麼,如果沒有就是undefined,
6.閉包怎樣快取資料;
function fn(){
var a=23
return function(){
a++console.log(a)
fn()
fn()
fn()
使用閉包的注意點
1.對捕獲的變數只是個引用,不是複製 function f num g 當函式g 第一次被執行時,f.le裡num 2 f 彈出2 說明彈出的num是對f.le裡num的引用,而不是複製 2.父函式每呼叫一次,都會建立乙個新的詞法環境,會產生不同的閉包 function f var result1 ...
什麼是閉包及閉包的優缺點
1 什麼是作用域鏈?在理解閉包以前.最好能先理解一下作用域鏈的含義,簡單來說,作用域鏈 就是函式在定義的時候建立的,用於尋找使用到的變數的值的乙個索引,而他內部的規則是,把函式自身的本地變數放在最前面,把自身的父級函式中的變數放在其次,把再高一級函式中的變數放在更後面,以此類推直至全域性物件為止.當...
JS閉包 及閉包的應用場景
閉包 如大家所知,通俗講,可以訪問其他函式內部變數的函式 建立閉包最常見的方式函式作為返回值 function fn let log fn log 列印 小帆 外部函式訪問內部變數 下面來實現乙個簡單的demo 計數器 var number 0 function creat creat 確實實現了需...