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 相关文章推荐
5秒后跳转效果(setInterval/SetTimeOut)
May 03 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
JavaScript实现关键字高亮功能
Nov 12 Javascript
使用js画图之圆、弧、扇形
Jan 12 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
JavaScript 自定义事件之我见
Sep 25 Javascript
浅谈vue异步数据影响页面渲染
Oct 29 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
python开发之str.format()用法实例分析
2016/02/22 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python生成ppt的方法
2018/06/07 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
Python新手学习标准库模块命名
2020/05/29 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
2014道德模范事迹材料
2014/02/16 职场文书
植树节口号
2014/06/21 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android