闭包
如果函数作为返回值,或者作为参数传递,函数里面引用了一个局部变量,那么就创建了一个闭包,等于在外部引用了局部变量,这个局部变量不会被销毁。例如
1 function foo(){ 2 const i=10; 3 4 return function bar(x){ 5 console.log(x+i) 6 } 7 } 8 9 let f1 = foo(); 10 f1(2);
作为参数传递
const max = 10, fn=function(x){ console.log(x+max) } 匿名立即执行函数 这里max取10 (function(f){
const max = 20; const i = 100;f(11) })(fn);
这里取上面的max值,自由变量要在创建他的环境中取值,而不是在父作用域中取值。同样的有: 箭头函数绑定创建它的作用域,this指向执行时,也就是调用他的对象的作用域。