zoukankan      html  css  js  c++  java
  • JavaScript 学习笔记— —闭包(一)

    一个函数内部还定义了另一个函数,内部函数可以调用外部函数的变量,这就是闭包。

    function foo(x) {
    var tmp = 3;
    function bar(y) {
    alert(x + y + (++tmp));
    }
    bar(10);
    }
    foo(2)

    上述代码输出为16,因为bar可以调用foo内的参数x,同样也可以调用foo里的tmp值。

    function foo(x) {
    var tmp = 3;
    return function (y) {
    alert(x + y + (++tmp));
    }
    }
    var bar = foo(2); // bar is now a closure.
    bar(10);

    上方代码的函数依旧输出16,bar还是可以调用x和tmp,即使它在函数外。但其实tmp仍然是在bar闭包之内,所以每次调用时都会进行运算。

    闭包最简单的实例:

    var a = 10;
    function test() {
    console.log(a); // will output 10
    console.log(b); // will output 6
    }
    var b = 6;
    test();

    当一个JavaScript函数被调用,将会创建一个新的执行环境。这个执行环境连同函数参数和父对象,还可以接收外部的声明变量。(如上例的a和b)

  • 相关阅读:
    VideoJS播放hls视频
    点击盒子外任意位置关闭当前盒子
    eval()由字符串获取变量值
    React Hooks
    Redux
    react-router-dom
    React开发入门
    js文件下载
    Springboot通过filter修改body参数思路
    java 将指定目录打包成ZipUtils
  • 原文地址:https://www.cnblogs.com/eaysun/p/4391215.html
Copyright © 2011-2022 走看看