JS闭包的几种常见形式实例详解


Posted in Javascript onSeptember 16, 2017

作用域链:

//作用域链
  var a = 1;
  function test() {
    var b =2;
    return a;
  }
  alert(test());//弹出1;
  alert(b);//不能获取b
//scope chain
  var a = 1;
  function test() {
    var b = 2;
    function test1() {
      var c = 3;
      alert(a);
      alert(b);
      alert(c);
    }
    test1();
  }
  test();//弹出1,弹出2,弹出3;

词法作用域:

//词法作用域;
  function f1() {
    var a = 12;
    return f2();
  }
  function f2() {
    return a;
  }
  alert(f1());//并不能获取a,a在f2()中并未定义;
function f1() {
    var a = 1;
    return f2();
  }
  function f2() {
    var b = 3;
    alert(b);
    return a;
  }
  alert(f1());//弹出3,a在f2()中未定义

function f1() {
    var a = 1;
    return f2();
  }
  function f2() {
    var b = 3;
    alert(b);
    return a;
  }
  alert(f1());//弹出3,a在f2()中未定义,undefined
  var a=55;
  alert(f1());//弹出3,弹出55

如何通过闭包突破全局作用域链——几种常见形式

//通过闭包突破全局作用域链
  function f() {
    var a = "sun";
    return function () {
      return a;
    }
  }
  var test = f();
  alert(test());//弹出sun
var n;
function f() {
  var a = "sun";
  n = function () {
    return a;
  }
}
f();
alert(n());//弹出sun
  function f(param) {
    var n =function () {
      return param;
    };
    param++;
    return n;
  }
  var test = f(45);
  alert(test());//弹出46;

总结

以上所述是小编给大家介绍的JS闭包的几种常见形式 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
var与Javascript变量隐式声明
Sep 17 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
基于jquery的动态创建表格的插件
Apr 05 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
vue 使用ref 让父组件调用子组件的方法
Feb 08 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
webpack打包多页面的方法
Nov 30 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 Javascript
ES6中Array.find()和findIndex()函数的用法详解
Sep 16 #Javascript
详解JS构造函数中this和return
Sep 16 #Javascript
Angular使用Md5加密的解决方法
Sep 16 #Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 #Javascript
EasyUI创建人员树的实例代码
Sep 15 #Javascript
webpack构建react多页面应用详解
Sep 15 #Javascript
详解Vue中一种简易路由传参办法
Sep 15 #Javascript
You might like
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
flexigrid 参数说明
2010/11/23 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
详解JavaScript 作用域
2020/07/14 Javascript
浅析Python的Django框架中的Memcached
2015/07/23 Python
python3 拼接字符串的7种方法
2018/09/12 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
浅析Python3 pip换源问题
2020/01/06 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
爱国主义教育活动总结
2014/05/07 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
python process模块的使用简介
2021/05/14 Python