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();
相关文章
相关标签/搜索