关于JavaScript闭包的相关知识的了解和使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于JavaScript闭包的相关知识的了解和使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2436字,纯文字阅读大概需要4分钟。
内容图文
![关于JavaScript闭包的相关知识的了解和使用](/upload/InfoBanner/zyjiaocheng/291/0a1121e366414cb0afe4b1268a5bfd0f.jpg)
JavaScript 变量可以是局部变量或全局变量。
私有变量可以用到闭包。
全局变量
函数可以访问由函数内部定义的变量,如:
实例
function myFunction() { var a = 4; return a * a;}
函数也可以访问函数外部定义的变量,如:
实例
var a = 4;function myFunction() { return a * a;}
后面一个实例中, a 是一个 全局 变量。
在web页面中全局变量属于 window 对象。
全局变量可应用于页面上的所有脚本。
在第一个实例中, a 是一个 局部 变量。
局部变量只能用于定义它函数内部。对于其他的函数或脚本代码是不可用的。
全局和局部变量即便名称相同,它们也是两个不同的变量。修改其中一个,不会影响另一个的值。
变量声明时如果不使用 var 关键字,那么它就是一个全局变量,即便它在函数内定义。
变量生命周期
全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在。
而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。
计数器困境
设想下如果你想统计一些数值,且该计数器在所有函数中都是可用的。
你可以使用全局变量,函数设置计数器递增:
实例
var counter = 0; function add() { return counter += 1;} add();add();add(); // 计数器现在为 3
计数器数值在执行 add() 函数时发生变化。
但问题来了,页面上的任何脚本都能改变计数器,即便没有调用 add() 函数。
如果我在函数内声明计数器,如果没有调用函数将无法修改计数器的值:
实例
function add() { var counter = 0; return counter += 1;} add();add();add(); // 本意是想输出 3, 但事与愿违,输出的都是 1 !
以上代码将无法正确输出,每次我调用 add() 函数,计数器都会设置为 1。
JavaScript 内嵌函数可以解决该问题。
JavaScript 内嵌函数
所有函数都能访问全局变量。
实际上,在 JavaScript 中,所有函数都能访问它们上一层的作用域。
JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。
该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量:
实例
function add() { var counter = 0; function plus() {counter += 1;} plus(); return counter; }
如果我们能在外部访问 plus() 函数,这样就能解决计数器的困境。
我们同样需要确保 counter = 0 只执行一次。
我们需要闭包。
JavaScript 闭包
还记得函数自我调用吗?该函数会做什么?
实例
var add = (function () { var counter = 0; return function () {return counter += 1;}})(); add();add();add(); // 计数器为 3
全局变量和局域变量的闭包知识做了大致的了解,更多的学习资料清关注Gxl网即可观看。
相关推荐:
关于JavaScript 表单验证的相关讲解
JavaScript 弹窗事件的相关知识
JavaScript Date(日期) 相关知识与用法
以上就是关于JavaScript 闭包的相关知识的了解和使用的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的关于JavaScript闭包的相关知识的了解和使用全部内容,希望文章能够帮你解决关于JavaScript闭包的相关知识的了解和使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。