webveuje/zuoye/js/闭包.md
2021-06-03 10:52:41 +08:00

2.6 KiB

闭包

  1. 什么是闭包

  2. 简述闭包的作用

  3. 下面代码的执行结果是什么 为什么

    function fn1() {
         var name = 'iceman';
         function fn2() {
             console.log(name);
         }
         fn2();
     }
     fn1();
    
    
  4. 下面代码的执行结果是什么 为什么

     function fn1() {
         var name = 'iceman';
         function fn2() {
             console.log(name);
         }
         return fn2;
     }
     var fn3 = fn1();
     fn3();
    
    
  5. 下面代码的执行结果是什么 为什么

     function fn1() {
         var name = 'iceman';
         function fn2() {
             console.log(name);
         }
         fn3(fn2);
     }
     function fn3(fn) {
         fn();
     }
     fn1();
    
  6. 下面代码的执行结果是什么 为什么

     function waitSomeTime(msg, time) {
         setTimeout(function () {
             console.log(msg)
         }, time);
     }
     waitSomeTime('hello', 1000);
    
  7. 下面代码的执行结果是什么 为什么

    for (var i = 1; i <= 10; i++) {
         setTimeout(function () {
             console.log(i);
         }, 1000);
     }
    
    
  8. 怎么才能在第7题中输出 1-10

  9. 下面代码的执行结果是什么 为什么

function module() {
	var arr = [];
	function add(val) {
		if (typeof val == 'number') {
			arr.push(val);
		}
	}
	function get(index) {
		if (index < arr.length) {
			return arr[index]
		} else {
			return null;
		}
	}
	return {
		add: add,
		get: get
	}
}
var mod1 = module();
mod1.add(1);
mod1.add(2);
mod1.add('xxx');
console.log(mod1.get(2));

  1. 下面代码的执行结果是什么 为什么
var a = 10
function foo(){
    console.log(a)
}

function sum() {
    var a = 20
    foo()
}

sum()
  1. 下面代码的执行结果是什么 为什么
var n = 10
function fn(){
    var n =20
    function f() {
       n++;
       console.log(n)
     }
    f()
    return f
}

var x = fn()
x()
x()
console.log(n)

  1. 简述闭包形成的原因
  2. 下面代码的执行结果是什么 为什么
var a = 0
function foo(){
    var b =14
    function fo(){
        console.log(a, b)
    }
    fo()
}
foo()
  1. 下面代码的执行结果是什么 为什么
var n = 10
function fn(){
    var n =20
    function f() {
       n++;
       console.log(n)
     }
    return f
}

var x = fn()
x()

  1. 下面代码的执行结果是什么 为什么
var a = '林一一'
function foo(){
    var a = 'foo'
    function fo(){
        console.log(a)
    }
    return fo
}

function f(p){
    var a = 'f'
    p()
}
f(foo())