这篇文章主要介绍了关于关于js闭包的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
一、作用域
var x = 0 //全局变量 x var y = 10 //全局变量 y var fun1 = function(){ var x = 1 //fun1函数局部变量 x console.log(x++) console.log(y) } fun1() //输出 1 10 函数内可以访问函数上级的变量 console.log(x) //输出0 函数外部不能调用函数内部的局部变量
登录后复制
二、闭包
var x = 0 //全局变量 x var fun1 = function(){ var x = 1 //fun1函数局部变量 x function fun2() { console.log(x++) //当x = 1时 x++ = x ; ++x = x+1 } return fun2 //此时fun2就是一个闭包 } var run1 = fun1() run1() //输出 1 run1() //输出 2 run1是函数是引用类型,上一步运行run1将变量x改变进而影响这步的输出 var run2 = run1 run2() //输出 3 因为run2 = run1 run1和run2是函数属于引用类型 所以共用一个作用域链 run2() //输出 4 var run3 = fun1() run3() //输出 1 这里不是5 run3有自己的作用域链 run3() //输出 2 console.log(x) //输出 0
登录后复制
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
关于JS 继承的介绍
以上就是关于JS闭包的介绍的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2747091.html