温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript中闭包含义指的是什么

发布时间:2020-08-29 14:03:18 来源:亿速云 阅读:143 作者:小新 栏目:web开发

JavaScript中闭包含义指的是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

闭包是函数和声明该函数的词法环境的组合,当内部函数被保存到外部时,将会生成闭包而闭包会导致原有作用域链不释放,造成内存泄露,但同时闭包也是非常有用的,因为它可以将某些数据与对该数据的操作进行关联。

例:

function demo() {
  var name = '张三'; // name 是demo()创建的局部变量
  function demo1() { //demo1()是demo()中的内部函数(闭包)
    console.log(name); // 使用父函数中声明的变量  
    }
  demo1();  
    }demo();

运行结果

JavaScript中闭包含义指的是什么

函数demo()中创建一个名为name的局部变量和一个名为demo1()的内部函数。 demo1()函数只能在demo()函数体内使用。 demo1没有自己的局部变量。但是由于内部函数可以访问外部函数的变量,所以demo1()可以访问父函数demo()中声明的变量名name。但是如果有同名变量 name 在demo1中被定义,则会使用 自己函数中定义的 name。该例子说明嵌套函数可以访问在其外部作用域中声明的变量。

如果上面的代码改成这样结果会如何?

function demo() {
  var name = '张三';
  function demo1() {
    console.log(name);
  }
  return demo1;
  }
  var newDemo = demo();
  newDemo();

运行结果

JavaScript中闭包含义指的是什么

由运行结果可知两段代码结果一样,内部函数demo1()在执行之前被外部函数返回形成闭包,在这种情况下,newDemo()是运行demo时所创建的函数demo1的一个引用,所以当调用newDemo()时,变量名name仍可以传递给console.log(name)。

示例

function num(x) {
  return function(y) {
    return x + y;
  };}
  var num1= num(2);
  var num2 = num(3);
  console.log(num1(2));// 4
  console.log(num2(2));// 5

运行结果

JavaScript中闭包含义指的是什么

定义一个函数num(x)用于接收一个参数x并返回一个新函数,这个新函数还接收一个参数y并返回x和y之和;同时又定义了两个新的值num1,num2都为闭包且传值分别为2,3.

感谢各位的阅读!看完上述内容,你们对JavaScript中闭包含义指的是什么大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI