难度级别:中高级及以上 提问概率:80%
很多初级开发者其实在日常工作中,很少有使用闭包的机会,但这却是一个非常高频的考点,因为对闭包不是特别了解,使用又少,久而久之,就觉得闭包是一个难点。在Javascript中,一个普通方法在执行完毕后,其内部的变量将不能再被访问,例如下面这个myFn方法,在方法执行完毕之后,其内部的num变量也就被销毁了,如果再次调用myFn方法的时候,num变量又会重新被定义,代码如下
Javascript代码:
<script>
function myFn(x) {
let num = 5;
console.log(num + x);
}
myFn(1); // 6
myFn(3); // 8
</script>
但如果是myFn方法内部产生了私有变量,将这个私有变量做为函数返回值,同时myFn方法又被外部作用域调用了,导致myFn方法执行完毕后,其内部的变量仍然可以被访问,这也就形成了一个闭包环境。
Javascript代码:
<script&g