JavaScript\ActionScript\ruby\php中实现回调函数,以及由此引出的闭包问题的讨论(一)
2009-09-25 00:00:00 来源:WEB开发网核心提示:关于回调函数,废话不多说,我在wiki上没有查到回调函数的具体定义,本文其实想着重讨论一下php如何实现回调函数,然后是js\as和ruby中使用回调函数的时候产生的闭包问题,闭包有时候是一件很神奇方便的玩意,但是不注意的话会占用内存的哦,特别是as和js这样的语言.首先是最简单的js,闭包问题一同在此讨论.1.1js
关于回调函数,废话不多说,我在wiki上没有查到回调函数的具体定义,本文其实想着重讨论一下php如何实现回调函数,然后是js\as和ruby中使用回调函数的时候产生的闭包问题,闭包有时候是一件很神奇方便的玩意,但是不注意的话会占用内存的哦,特别是as和js这样的语言.
首先是最简单的js,闭包问题一同在此讨论.
1.1 js回调函数实现.
直接上代码:
Js中的回调函数实现起来那是理所当然,因为js中函数就是一种对象,也就是Function对象,所以可以像其他变量一样作为参数在函数之间传送,这样描述可能不太清楚,但是这应该是一个js中的基本概念,所以不做任何解释.
到此,你思考一下上面的例子会输出什么结果呢?
这不是回调函数的问题了,而是闭包问题,如果以前没有注意这个概念,那么肯定觉得会输出"我是func函数里的str哦",因为callback()这句话执行的时候,它的外部有一个str变量,所以在callback()函数里输出str的值得时候理应输出局部变量str的值,然而不如你所想,事实上,上面的代码输出"我是最外部的str变量哦".
Tags:JavaScript ActionScript ruby
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接