zoukankan      html  css  js  c++  java
  • 6-JavaScript 闭包(1)

    JavaScript闭包(一)


    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

    官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

    一.变量的作用域

    要理解闭包,首先要理解JavaScript特殊的变量作用域。

    变量的作用域无非就是两种:全局变量和局部变量。JavaScript语言的特殊之处:在函数内部可以读取全局变量,在函数外部自然无法访问局部变量。

    注:声明变量时要使用 var 关键字,如果不用的话,实际是声明了一个全局变量(自由变量)。

    二.闭包的引出:

    下面的一个例子:

    想要获得的效果是:点击p标签时,第一个弹出1,第二个弹出2,第三个弹出3.

    结果:点击p标签都弹出3.

    解决:

    这就用到闭包的了,闭包可以简单的理解为能够读取其他函数内部变量的函数。

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

    方案一:匿名函数的自调用

    解决二:内部函数

    方案三:外部函数

  • 相关阅读:
    PHP+MySQL存储数据出现中文乱码的问题
    IE和火狐的css兼容性问题
    JS调用Webservice
    NET-使用Js调用WebService
    ASP.NET 与 Ajax 的实现方式
    未能加载文件或程序集“System.Web.Extensions, Version=1.0.61025.0, Culture=neutral
    c#webservice的简单示例
    HttpRequest Get和Post调用其他页面的方法
    MYSQL 递归操作
    sql with as 用法
  • 原文地址:https://www.cnblogs.com/kingmin/p/6925498.html
Copyright © 2011-2022 走看看