javascript中闭包是什么

作者: a333661d6d6e | 来源:发表于2018-10-29 17:47 被阅读2次

javascript中闭包是什么

javascript中闭包是什么

JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就是将函数内部和函数外部连接起来的一座桥梁。

函数的闭包使用场景:比如我们想要一个函数来执行计数功能。

如果设计全局变量

var counter=0; 2 function add(){ 3 4 return counter++;} 
// add();

在浏览器调用 add();//值为2

问题是如何当我们设计另外一个方法时用到需要counter这个变量,我们在进行修改无疑会改变counter的初始值如下

<script> var counter=0; function add(){ return counter++;} function plus(){
 return counter=5;
 }
 
 plus();
</script>  
//欢迎加入全栈开发交流群一起学习交流:864305860

我们此时在调用add() 值就是6 所以设置counter变量为全局变量的时候我们调用函数会得到不想要的值;

function add(){
var counter=0;
return counter++ ;
}调用add()结果永远是0,函数运行到 counter=0;就覆盖变量;

所以我们需要函数外部可以读取函数变量内部的值,下面就对函数进行了私有化 在 JavaScript 中,所有函数都能访问它们上一层的作用域

JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量

 function add() {
 var counter=0 ;
 function plus (){
 counter++;
 }
 plus();
 return counter;
 }

闭包的写法

函数的立即执行()() 及函数的声明和函数的执行放在一起

这就是闭包的最终格式

var plus=(function add() {
 var counter=0;//定义为局部变量
 return function(){
 counter++;//
 console.log("counter"+counter);
 }
 })()

调用plus() ;

闭包就是将函数内部和函数外部连接起来的一座桥梁。


全栈开发交流群:864305860.png

相关文章

  • javascript中闭包是什么

    javascript中闭包是什么 JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就...

  • JavaScript 中 闭包 的详解

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念。ECMAScript 中给闭包的定义是:闭...

  • JavaScript 中的闭包

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念。ECMAScript 中给闭包的定义是:闭...

  • 闭包的理解

    什么是闭包,闭包的用途是什么? 闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • js闭包是什么?

    一、闭包是什么?   闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数...

  • 闭包关系

    一、闭包是什么? 闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部...

  • Javascript闭包并非魔法

    本文翻译自JavaScript closures for beginners 闭包不是什么魔法 本篇文章介绍了闭包...

  • JavaScript 闭包问题

    1.闭包的概念 JavaScript中什么是闭包?首先我们要知道在JavaScript中,函数中声明变量函数外是无...

  • JavaScript----闭包

    javascript之闭包 闭包的概念     闭包(closure)是 JavaScript 的一种语法特性。 ...

网友评论

    本文标题:javascript中闭包是什么

    本文链接:https://www.haomeiwen.com/subject/iqfitqtx.html