闭包作用域练习

1、

var a = 10,
    b = 11,
    c = 12;
function test(a) {
    
    
    a = 1;
    var b = 2;
    c = 3;
}
test(10);
console.log(a, b, c);

在这里插入图片描述

2、

var a = 4;
function b(x, y, a) {
    
    
    console.log(a);
    arguments[2] = 10;
    console.log(a);
}
a = b(1, 2, 3);
console.log(a);

在这里插入图片描述

3、

function fn(x, y) {
    
    
    /!*
     * EC(FN)
     *   作用域链:<EC(FN),EC(G)>
     *   初始ARGUMENTS: {
    
    0:10,length:1} 
     *   形参赋值:x=10 y=undefined
     *      「映射关系」  x->arguments[0]
     *   变量提升:--
     *!/
    let arg = arguments;
    x = 100;
    console.log(arg[0]); //=>100

    arg[1] = 200;
    console.log(y); //=>undefined
}
fn(10); 

在这里插入图片描述

4、

var a = 9;
function fn() {
    
    
    a = 0;
    return function (b) {
    
    
        return b + a++;
    }
}
var f = fn();
console.log(f(5));
console.log(fn()(5));
console.log(f(5));
console.log(a);

在这里插入图片描述

5、

var x = 4;
function func() {
    
    
    return function(y) {
    
    
        console.log(y + (--x));
    }
}
var f = func(5);
f(6);
func(7)(8);
f(9);
console.log(x);

在这里插入图片描述

6、

function fun(n, o) {
    
    
    console.log(o);
    return {
    
    
        fun: function (m) {
    
    
            return fun(m, n);
        }
    };
}
var c = fun(0).fun(1);
c.fun(2);
c.fun(3);

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44880095/article/details/113358068