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 相关文章推荐
js过滤HTML标签以及空格的思路及代码
May 24 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
简单实现JS对dom操作封装
Dec 02 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
js 奇葩技巧之隐藏代码
Aug 11 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
layui按条件隐藏表格列的实例
Sep 19 Javascript
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 24 Javascript
Vue2.0搭建脚手架
Mar 13 Vue.js
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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
python解析xml文件实例分享
2013/12/04 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
Java编程面试题
2016/04/04 面试题
创意活动策划书
2014/01/15 职场文书
学校万圣节活动方案
2014/02/13 职场文书
承诺书格式范文
2014/06/03 职场文书
小学数学课题方案
2014/06/15 职场文书
家具商场的活动方案
2014/08/16 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
MyBatis 动态SQL全面详解
2021/10/05 MySQL
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python