closure(闭包)

  • 闭包
  • 函数内的函数, 可以读取其他函数内部变量的函数
  • 闭包使得外部函数返回后JavaScript回收机制不生效,因为内部函数执行需要依赖外部函数的变量(参数 或 自定义的变量)
  • 闭包是将内部函数和外部函数链接起来的桥梁

<body>

<button class="btn1">按钮1</button>

<button class="btn2">按钮2</button>

<button class="btn3">按钮3</button>

<script>

​ var bt1 = document.querySelector(‘.btn1’);

​ var bt2 = document.querySelector(‘.btn2’);

​ var bt3 = document.querySelector(‘.btn3’);

​ function changeColor(color) {

​ return function() {

​ document.body.style.backgroundColor = color;

​ }

​ }

​ bt1.onclick = changeColor(‘blue’);

​ bt2.onclick = changeColor(‘red’);

​ bt3.onclick = changeColor(‘green’);

</script>

</body