JS-閉包練習

首先,第一個輸出,由於前置運算,i要先參與輸出,而後再自增,因此輸出爲0閉包

第二個輸出,由於f1和f2是不一樣的函數,不共享i變量,因此輸出也爲0函數

第三個輸出,由於是f1,共享i,因此i加了1,輸出爲1spa

let foo = function(){
    let i = 0;
    return function(){
        console.log(i++);
    }
}
let f1 = foo();
let f2 = foo();
f1();// 0
f2();// 0
f1();// 1

 

首先,從函數和下面的閉包能夠看出,第一行和第二行代碼是迷惑人的,正常思考,輸出就是。code

let x = 100;
let y = 200;
let funA = function(x){
    x += 1;
    let y = 201;
    let funB = function(){
        console.log(x); // 102
        console.log(y); // 201
    }
    return funB;
}
let f = funA(101);
f();
相關文章
相關標籤/搜索