javascript中闭包的定义场景

分类:知识百科 日期: 点击:0

闭包是一种特殊的语法结构,它可以让函数在定义以后可以访问它被定义时候的作用域中的变量,从而实不同的作用域中共享变量的功能。它的定义场景一般有以下几种:

1. 封装变量

function getName(){
  var name = 'Jack';
  return function(){
    return name;
  }
}

var getNameFunc = getName();
console.log(getNameFunc()); // 输出 Jack

上面的例子中,变量name被封装在函数getName()中,通过闭包,变量name在外部仍然可以被访问,从而实现封装变量的功能。

2. 实现延迟执行

function sayHi(){
  console.log('Hi');
}

setTimeout(function(){
  sayHi();
}, 3000);

上面的例子中,函数sayHi()被延迟执行了3秒,这里的sayHi()就是一个闭包,它可以在函数setTimeout()的作用域中被访问。

3. 实现模块化

  • 列表项1:定义一个模块文件module.js:
    // module.js
    function sum(a, b){
      return a + b;
    }
    
    function sub(a, b){
      return a - b;
    }
    
    module.exports = {
      sum: sum,
      sub: sub
    }
    
  • 列表项2:在另一个文件中引用module.js:
    // index.js
    var module = require('./module.js');
    
    console.log(module.sum(1, 2)); // 输出 3
    console.log(module.sub(1, 2)); // 输出 -1
    
  • 列表项3:通过闭包,函数sum()和sub()可以在index.js中被访问,从而实现模块化。

闭包可以用来封装变量,实现延迟执行,实现模块化等功能,可以说是javascript中一个重要的语法结构。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。