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 相关文章推荐
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
JS 文件本身编码转换 图文教程
Oct 12 Javascript
JSON 数据格式介绍
Jan 13 Javascript
推荐4个原生javascript常用的函数
Jan 12 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
Feb 20 Javascript
jQuery中cookie插件用法实例分析
Dec 04 Javascript
jquery中object对象循环遍历的方法
Dec 18 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
微信小程序 form组件详解及简单实例
Jan 10 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
Apr 07 jQuery
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
function.inc.php超越php
2006/12/09 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
php生出随机字符串
2017/07/06 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
python实现飞机大战
2018/09/11 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
pandas的resample重采样的使用
2020/04/24 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
2014年教师培训的自我评价
2014/01/03 职场文书
展会邀请函范文
2014/01/26 职场文书
医学类个人求职信范文
2014/02/05 职场文书
《日月潭》教学反思
2014/02/28 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2014年招商工作总结
2014/11/22 职场文书
创业计划书之物流运送
2019/09/17 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
Python图片验证码降噪和8邻域降噪
2021/08/30 Python