<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>omiga &#187; closure</title>
	<atom:link href="http://omiga.org/blog/archives/tag/closure/feed" rel="self" type="application/rss+xml" />
	<link>http://omiga.org/blog</link>
	<description>简单就好</description>
	<lastBuildDate>Mon, 06 Feb 2012 17:39:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>setTimeout，setInterval参数传递</title>
		<link>http://omiga.org/blog/archives/877</link>
		<comments>http://omiga.org/blog/archives/877#comments</comments>
		<pubDate>Thu, 15 Jan 2009 07:12:11 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[setInterval]]></category>
		<category><![CDATA[setTimout]]></category>
		<category><![CDATA[闭包]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=877</guid>
		<description><![CDATA[可能你曾经试着这样去给setTimeout()或setInterval()传递参数： setTimeout('func("'+'hello,world!'+'")',2000); 这种方式存在两个明显的弊端： 无法传递object类型的参数 代码混乱，增加维护难度 事实上你完全可以使用闭包来解决这个问题。 function msg(s){ return function(){alert(s)}; } var m = msg("hello,world!"); setTimeout(m,2000); 当然你还可以使用curry化的思想，进一步完善代码： function delayMsg(s){ function msg(){ alert(s); } setTimeout(msg,2000); } delayMsg("hello,world!"); © omiga for omiga, 2009. &#124; Permalink &#124; No comment &#124; Add to del.icio.us Post tags: closure, javascript, setInterval, setTimout, 闭包]]></description>
			<content:encoded><![CDATA[<p>可能你曾经试着这样去给setTimeout()或setInterval()传递参数：</p>
<pre>setTimeout('func("'+'hello,world!'+'")',2000);</pre>
<p>这种方式存在两个明显的弊端：</p>
<ol>
<li>无法传递object类型的参数</li>
<li>代码混乱，增加维护难度</li>
</ol>
<p>事实上你完全可以使用闭包来解决这个问题。</p>
<pre>function msg(s){
	return function(){alert(s)};
}
var m = msg("hello,world!");
setTimeout(m,2000);</pre>
<p>当然你还可以使用<a href="http://zh.wikipedia.org/wiki/Currying" target="_blank">curry化</a>的思想，进一步完善代码：</p>
<pre>function delayMsg(s){
	function msg(){
		alert(s);
	}
	setTimeout(msg,2000);
}
delayMsg("hello,world!");</pre>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2009. |
<a href="http://omiga.org/blog/archives/877">Permalink</a> |
<a href="http://omiga.org/blog/archives/877#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/877&title=setTimeout，setInterval参数传递">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/closure" rel="tag">closure</a>, <a href="http://omiga.org/blog/archives/tag/javascript" rel="tag">javascript</a>, <a href="http://omiga.org/blog/archives/tag/setinterval" rel="tag">setInterval</a>, <a href="http://omiga.org/blog/archives/tag/settimout" rel="tag">setTimout</a>, <a href="http://omiga.org/blog/archives/tag/%e9%97%ad%e5%8c%85" rel="tag">闭包</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/877/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

