博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript基础---理解闭包问题
阅读量:4507 次
发布时间:2019-06-08

本文共 1002 字,大约阅读时间需要 3 分钟。

s首先来看一个例子,

 

<html>

<head>

<title>test</title>

<script language="javascript">   

function f1(){

    n=999;

    function f2(){
      alert(n); // 999     
      }   
    return f2;   
    }     
var result=f1();  
result();
 

</head>

<body> </body>

</html>

复制代码

 从上面的例子可以理解,如果是直接f1()是访问不到alert的,只有在返回给变量的时候,才会把f1中的f2作为返回值输出f2中的alert。

直白的理解,闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

那么闭包都有啥子作用呢?

1、读取函数内部的变量

2、让这些变量的值始终保存在内存之中

 

<!DOCTYPE html>

<html>
<head>
<title>test</title>
<script language="javascript">
  function f1(){

    n=999;

n_add=function(){n++;}
    function f2(){
      alert(n); // 999
    }
return f2;
  }
var result=f1();
result();
n_add();
result();//1000
n_add();
result();//1001
//不定义var的时候是全局变量
//定义var的时候是局部变量
//所以n和n_add都是全局的,但此处访问不到f2

</script>

</head>

<body>
</body>
</html>

上面的例子可以很方便的理解闭包值用来保存变量的值的作用

 

http://www.jb51.net/article/24101.htm###

转载于:https://www.cnblogs.com/yingzi/archive/2012/02/27/2369260.html

你可能感兴趣的文章
一个仿照系统UIAlertView写的提示框
查看>>
Genymotion集成到Eclipse
查看>>
代码简洁之四 统一抽象层次
查看>>
IOS 缩放图片常用方法
查看>>
软件工程课
查看>>
Pycharm-连接服务器
查看>>
[Leetcode] The Skyline Problem
查看>>
okhttp异步请求流程和源码分析
查看>>
【集合框架】JDK1.8源码分析之Comparable && Comparator(九)
查看>>
Flutter之内置动画(转)
查看>>
uni-app中onLoad不起作用
查看>>
多线程概述
查看>>
Linux_ubuntu命令-用户、权限管理
查看>>
Knowladge_网站学习_RSS 学习
查看>>
TCP/IP,Web世界的基本规则
查看>>
c++ 子类构造函数初始化及父类构造初始化
查看>>
Analysis on Human Various Emotional Expression
查看>>
DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件
查看>>
SignalR---服务端
查看>>
PlayerPrefs存储Vector3等结构数据
查看>>