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静态的url如何传递
May 03 Javascript
JavaScript—window对象使用示例
Dec 09 Javascript
jquery模拟进度条实现方法
Aug 03 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
webpack-dev-server自动更新页面方法
Feb 22 Javascript
js中el表达式的使用和非空判断方法
Mar 28 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
vue结合element-ui使用示例
Jan 24 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
Sep 02 Javascript
layui 表单标签的校验方法
Sep 04 Javascript
vue键盘事件点击事件加native操作
Jul 27 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
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
继续学习javascript闭包
2015/12/03 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
python中的__slots__使用示例
2015/02/26 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
Python数组并集交集补集代码实例
2020/02/18 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
详解python metaclass(元类)
2020/08/13 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
奉献演讲稿范文
2014/05/21 职场文书
公司股东出资证明书
2014/11/01 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript