<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Gil Fink&amp;#39;s Blog</title><link>http://blogs.microsoft.co.il/blogs/gilf/</link><description>Fink about IT</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/GilFinkBlog" /><feedburner:info uri="gilfinkblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><item><title>VSLive Chicago Sessions Slide Decks and Demos</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/bmzE_d5PGP0/vslive-chicago-sessions-slide-decks-and-demos.aspx</link><pubDate>Wed, 15 May 2013 23:13:15 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2037348</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=2037348</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/15/vslive-chicago-sessions-slide-decks-and-demos.aspx#comments</comments><description>&lt;h1&gt;VSLive Chicago Sessions Slide Decks and Demos&lt;/h1&gt;  &lt;p&gt;&lt;img title="VSLive Chicago Sessions Slide Decks and Demos" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="VSLive Chicago Sessions Slide Decks and Demos" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/VSLive_5F0BFDEF.png" width="244" height="54" /&gt;Just finished delivering three sessions in VSLive Chicago. It was nice meeting all the attendees and talking about technologies that I like like HTML5, OData and Entity Framework. Here is a list of the sessions that I delivered:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://vslive.com/Events/Chicago-2013/Sessions/Wednesday/W07-Working-with-ClientSide-HTML5-Storage-Technologies.aspx"&gt;&lt;strong&gt;Working with Client-Side HTML5 Storage Technologies&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://vslive.com/Events/Chicago-2013/Sessions/Wednesday/W15-OData-Oh-Yeah.aspx"&gt;&lt;strong&gt;OData - Oh Yeah&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;strong&gt;&lt;a href="http://vslive.com/Events/Chicago-2013/Sessions/Wednesday/W19-Not-Just-a-Designer-Code-First-and-Entity-Framework.aspx"&gt;Not Just a Designer: Code First and Entity Framework&lt;/a&gt;&lt;/strong&gt;&lt;/u&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You can find the slide decks and demos in this &lt;a href="https://skydrive.live.com/#cid=CC807E0FCC4169F4&amp;amp;id=CC807E0FCC4169F4%21391" target="_blank"&gt;&lt;strong&gt;link&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2037348" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=bmzE_d5PGP0:s3_0ZwhIJb8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=bmzE_d5PGP0:s3_0ZwhIJb8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=bmzE_d5PGP0:s3_0ZwhIJb8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=bmzE_d5PGP0:s3_0ZwhIJb8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=bmzE_d5PGP0:s3_0ZwhIJb8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/bmzE_d5PGP0" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OData/default.aspx">OData</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/HTML5/default.aspx">HTML5</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/VSLive/default.aspx">VSLive</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/15/vslive-chicago-sessions-slide-decks-and-demos.aspx</feedburner:origLink></item><item><title>VSLive Chicago Here I Come</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/S4nxD1RYpPA/vslive-chicago-here-i-come.aspx</link><pubDate>Sun, 12 May 2013 10:09:09 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2023911</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=2023911</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/12/vslive-chicago-here-i-come.aspx#comments</comments><description>&lt;h1&gt;VSLive Chicago Here I Come&lt;/h1&gt;  &lt;p&gt;&lt;img title="VSLive Chicago Here I Come" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="VSLive Chicago Here I Come" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/VSLive_32E924A8.png" width="304" height="66" /&gt;In about a few hours I’m starting a trip to Chicago to attend &lt;a href="http://vslive.com/" target="_blank"&gt;&lt;strong&gt;VSLive&lt;/strong&gt;&lt;/a&gt; Chicago conference. It is going to be the second time I’m speaking in VSLive conference and I’m excited (the previous one had been in &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2012/08/11/wrapping-up-the-vslive-redmond-week.aspx" target="_blank"&gt;&lt;strong&gt;VSLive Redmond&lt;/strong&gt;&lt;/a&gt; 2012). This time I’m having three back-to-back sessions at the same day (Wednesday). The session topics are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://vslive.com/Events/Chicago-2013/Sessions/Wednesday/W07-Working-with-ClientSide-HTML5-Storage-Technologies.aspx"&gt;&lt;strong&gt;Working with Client-Side HTML5 Storage Technologies&lt;/strong&gt;&lt;/a&gt;      &lt;br /&gt;HTML is the markup language that every web developer uses in order to structure and present content in the Internet. HTML5 is the standard that is being shaped and developed currently. It extends and improves the last HTML4 standard and takes it to the next level with support for multimedia, communication, semantics and more. In this session we will deep dive into the new storage options that HTML5 brings and how to use them. The session will discuss Web Storage, IndexedDB and AppCache APIs. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://vslive.com/Events/Chicago-2013/Sessions/Wednesday/W15-OData-Oh-Yeah.aspx"&gt;&lt;strong&gt;OData - Oh Yeah&lt;/strong&gt;&lt;/a&gt;      &lt;br /&gt;Open Data Protocol (OData) is a protocol for exposing and consuming data on the web. The OData ecosystem is a growing community of data producers and consumers using the Open Data Protocol to exchange data. This session will explain what the Open Data Protocol (OData) is and how to create OData feeds using WCF Data Services. &lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;strong&gt;&lt;a href="http://vslive.com/Events/Chicago-2013/Sessions/Wednesday/W19-Not-Just-a-Designer-Code-First-and-Entity-Framework.aspx"&gt;Not Just a Designer: Code First and Entity Framework&lt;/a&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/u&gt;Entity Framework 4 brought many new opportunities for building complex data driven applications. Code First is an Entity Framework capability that provides a code-centric experience for interacting with models and databases. This session will cover several Entity Framework features such as Code First, DbContext API and Migrations.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you are attending the conference and would like to meet me, you can ping me on the blog’s &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/contact.aspx" target="_blank"&gt;&lt;strong&gt;contact form&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;See you there!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2023911" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=S4nxD1RYpPA:gYpEXnL1muM:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=S4nxD1RYpPA:gYpEXnL1muM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=S4nxD1RYpPA:gYpEXnL1muM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=S4nxD1RYpPA:gYpEXnL1muM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=S4nxD1RYpPA:gYpEXnL1muM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/S4nxD1RYpPA" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/VSLive/default.aspx">VSLive</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/12/vslive-chicago-here-i-come.aspx</feedburner:origLink></item><item><title>SDP13 Third Day Slide Decks and Demos</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/qf3M9PYaCAA/sdp13-third-day-slide-decks-and-demos.aspx</link><pubDate>Tue, 07 May 2013 13:48:40 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2005331</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=2005331</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/07/sdp13-third-day-slide-decks-and-demos.aspx#comments</comments><description>&lt;h1&gt;SDP13 Third Day Slide Decks and Demos&lt;/h1&gt;  &lt;p&gt;&lt;img title="SDP13 Third Day Slide Decks and Demos" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="SDP13 Third Day Slide Decks and Demos" src="http://blogs.microsoft.co.il/blogs/gilf/SDPLogo_2BD66F7C.png" width="525" height="164" /&gt;&lt;/p&gt;  &lt;p&gt;Today I participated the &lt;a href="http://www.seladeveloperpractice.com/"&gt;&lt;strong&gt;Sela SDP13 conference&lt;/strong&gt;&lt;/a&gt; second breakout sessions day. I delivered two sessions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creating Data Driven HTML5 Applications &lt;/li&gt;    &lt;li&gt;Building Scalable JavaScript Apps &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I want to thank all the people who came to hear both of my sessions. You can download the slide deck and demos of all my SDP13 breakout sessions from &lt;a href="https://skydrive.live.com/#cid=CC807E0FCC4169F4&amp;amp;id=CC807E0FCC4169F4%21381"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;. SDP is over for me as a speaker but the conference continues until the end of this week.&lt;/p&gt;  &lt;p&gt;See you in the next SDP!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2005331" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=qf3M9PYaCAA:0SbNVgEvyh4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=qf3M9PYaCAA:0SbNVgEvyh4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=qf3M9PYaCAA:0SbNVgEvyh4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=qf3M9PYaCAA:0SbNVgEvyh4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=qf3M9PYaCAA:0SbNVgEvyh4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/qf3M9PYaCAA" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/SDP/default.aspx">SDP</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Sela+Group/default.aspx">Sela Group</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/HTML5/default.aspx">HTML5</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/07/sdp13-third-day-slide-decks-and-demos.aspx</feedburner:origLink></item><item><title>Embracing JavaScript with TypeScript Slide Deck and Demos</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/uCD_wd79hGs/embracing-javascript-with-typescript-slide-deck-and-demos.aspx</link><pubDate>Mon, 06 May 2013 13:30:28 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2000137</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=2000137</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/06/embracing-javascript-with-typescript-slide-deck-and-demos.aspx#comments</comments><description>&lt;h1&gt;Embracing JavaScript with TypeScript Slide Deck and Demos&lt;/h1&gt;  &lt;p&gt;&lt;img title="Embracing JavaScript with TypeScript Slide Deck and Demos" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="Embracing JavaScript with TypeScript Slide Deck and Demos" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/TypeScript-Logo_7927C3EE.png" width="240" height="106" /&gt;Today I participated the &lt;a href="http://www.seladeveloperpractice.com/" target="_blank"&gt;&lt;strong&gt;Sela SDP13 conference&lt;/strong&gt;&lt;/a&gt; first breakout sessions day. I delivered a session about the TypeScript language with the following agenda:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Why&lt;/li&gt;    &lt;li&gt;Introduction to TypeScript&lt;/li&gt;    &lt;li&gt;Building a Simple App with TypeScript&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I want to thank all the people who came to hear about the language. You can download the slide deck and demos from &lt;a href="https://skydrive.live.com/#cid=CC807E0FCC4169F4&amp;amp;id=CC807E0FCC4169F4%21381" target="_blank"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Tomorrow I’m having 2 sessions: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creating Data Driven HTML5 Applications&lt;/li&gt;    &lt;li&gt;Building Scalable JavaScript Apps&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;See you there!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2000137" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=uCD_wd79hGs:VXJ4RogJx78:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=uCD_wd79hGs:VXJ4RogJx78:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=uCD_wd79hGs:VXJ4RogJx78:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=uCD_wd79hGs:VXJ4RogJx78:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=uCD_wd79hGs:VXJ4RogJx78:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/uCD_wd79hGs" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/SDP/default.aspx">SDP</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Sela+Group/default.aspx">Sela Group</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/TypeScript/default.aspx">TypeScript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/06/embracing-javascript-with-typescript-slide-deck-and-demos.aspx</feedburner:origLink></item><item><title>Sela Developer Practice 2013 is Around the Corner</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/agLowLWQ7o8/sela-developer-practice-2013-is-around-the-corner.aspx</link><pubDate>Thu, 02 May 2013 06:59:42 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1986113</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1986113</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/02/sela-developer-practice-2013-is-around-the-corner.aspx#comments</comments><description>&lt;h1&gt;Sela Developer Practice 2013 is Around the Corner&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://www.seladeveloperpractice.com/" target="_blank"&gt;&lt;img title="Sela Developer Practice 2013 is Around the Corner" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="Sela Developer Practice 2013 is Around the Corner" src="http://blogs.microsoft.co.il/blogs/gilf/SDPLogo_58849119.png" width="525" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next week it is starting! The &lt;a href="http://www.seladeveloperpractice.com/" target="_blank"&gt;&lt;strong&gt;biggest developer conference&lt;/strong&gt;&lt;/a&gt; Sela had so far. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;Here are some interesting details about the conference:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We have 8 international speakers including &lt;a href="http://www.seladeveloperpractice.com/speakers?selected=Jesse_Liberty"&gt;&lt;strong&gt;Jesse Liberty&lt;/strong&gt;&lt;/a&gt;, &lt;a href="http://www.seladeveloperpractice.com/speakers?selected=Shawn_Wildermuth"&gt;&lt;strong&gt;Shawn Wildermuth&lt;/strong&gt;&lt;/a&gt;, and &lt;a href="http://www.seladeveloperpractice.com/speakers?selected=Udi_Dahan"&gt;&lt;strong&gt;Udi Dahan&lt;/strong&gt;&lt;/a&gt; and 28 local speakers&lt;/li&gt;    &lt;li&gt;We have more then 70 sessions and workshops &lt;/li&gt;    &lt;li&gt;14 of the workshops were sold out so we had to duplicate some of them &lt;/li&gt;    &lt;li&gt;The session topics include a lot of interesting technologies like Node.js, PhoneGap, RavenDB, Hadoop, Solr, TypeScript, and more&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Last and not least, if you are attending the conference drop by and say hi.    &lt;br /&gt;I’ll be happy to meet you there!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1986113" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=agLowLWQ7o8:aLcCvHnHrG0:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=agLowLWQ7o8:aLcCvHnHrG0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=agLowLWQ7o8:aLcCvHnHrG0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=agLowLWQ7o8:aLcCvHnHrG0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=agLowLWQ7o8:aLcCvHnHrG0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/agLowLWQ7o8" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/SDP/default.aspx">SDP</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Sela+Group/default.aspx">Sela Group</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Sela/default.aspx">Sela</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/05/02/sela-developer-practice-2013-is-around-the-corner.aspx</feedburner:origLink></item><item><title>JavaScript Libraries are Not Your Front-End Architecture</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/h7rQ9IhHEtQ/javascript-libraries-are-not-your-front-end-architecture.aspx</link><pubDate>Wed, 24 Apr 2013 15:58:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1949902</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1949902</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/24/javascript-libraries-are-not-your-front-end-architecture.aspx#comments</comments><description>&lt;h1&gt;JavaScript Libraries are Not Your Front-End Architecture&lt;/h1&gt;  &lt;p&gt;This is not going to be a post about architecture but more about MHO. Lately, I’m asked to evaluate the architecture of small to big front-end solutions. There is big buzz around front-end development and it drives a lot of companies to build client-side solutions without considering how to build them. One of the misunderstandings I’m facing a lot is calling the existence of JavaScript libraries in the solution a solution architecture. Sorry to say that but &lt;/p&gt;  &lt;h4&gt;JavaScript libraries are not front-end architecture&lt;/h4&gt;  &lt;p&gt;Every JavaScript library deals with one or more aspects of your code like namespaces/modules/packages in your server-side app. Whether it is &lt;strong&gt;jQuery&lt;/strong&gt; for DOM interaction, &lt;strong&gt;Backbone/Angular/Ember/Knockout&lt;/strong&gt; for &lt;strong&gt;MV*&lt;/strong&gt; and separation of concerns, &lt;strong&gt;require.js&lt;/strong&gt; for &lt;strong&gt;AMD&lt;/strong&gt; or any other JavaScript library, all those libraries solves some common problems. &lt;/p&gt;  &lt;p&gt;Take a moment and ask yourself these question regarding your JavaScript apps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Can your app scale? &lt;/li&gt;    &lt;li&gt;If you remove one of the modules/features in your webpage is it going to break? &lt;/li&gt;    &lt;li&gt;Do you have reusable components/features in your solution? &lt;/li&gt;    &lt;li&gt;Are your app parts tightly coupled? &lt;/li&gt;    &lt;li&gt;Are your modules/features testable? &lt;/li&gt;    &lt;li&gt;What is happening when a module/feature is in error state? &lt;/li&gt;    &lt;li&gt;And more &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you answered those questions that might imply that there is a front-end architecture in your solution. If you can’t answer those questions then you might have problems in your solution. &lt;/p&gt;  &lt;p&gt;Building big and scalable JavaScript apps is a difficult task and shouldn’t be undertaken lightly. Using JavaScript libraries helps to make the task less complicated but it doesn’t imply that you have an architecture. I would like to hear your opinion about the subject.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1949902" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=h7rQ9IhHEtQ:A_4K-6kguiw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=h7rQ9IhHEtQ:A_4K-6kguiw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=h7rQ9IhHEtQ:A_4K-6kguiw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=h7rQ9IhHEtQ:A_4K-6kguiw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=h7rQ9IhHEtQ:A_4K-6kguiw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/h7rQ9IhHEtQ" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/24/javascript-libraries-are-not-your-front-end-architecture.aspx</feedburner:origLink></item><item><title>Quick Tip – HTML5 classList Element Property</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/WEaFLxxyvyQ/quick-tip-html5-classlist-element-property.aspx</link><pubDate>Sun, 21 Apr 2013 06:44:28 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1931131</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1931131</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/21/quick-tip-html5-classlist-element-property.aspx#comments</comments><description>&lt;h1&gt;Quick Tip – HTML5 classList Element Property&lt;/h1&gt;  &lt;p&gt;&lt;img title="Quick Tip – HTML5 classList Element Property" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="Quick Tip – HTML5 classList Element Property" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/HTML5Logo128_404E951B.png" width="128" height="128" /&gt;When we want to change the style or display of an HTML element most of the times we update it’s class name. The main way to change the class name is using the element’s &lt;strong&gt;className&lt;/strong&gt; property. This raises a little problem. The &lt;strong&gt;className&lt;/strong&gt; property is string based and can get a string value of one or more classes. When we want to toggle/update a class name and we have more than one class set to an element that means we will have to do string manipulation. String manipulations can be cumbersome and can affect the performance of the operation. &lt;/p&gt;  &lt;p&gt;Not any more… HTML5 introduces the &lt;strong&gt;classList&lt;/strong&gt; property for HTML elements and it can help to avoid the string manipulation problem.&lt;/p&gt;  &lt;h3&gt;The classList Property&lt;/h3&gt;  &lt;p&gt;Each HTML element holds a new &lt;strong&gt;classList&lt;/strong&gt; property. The &lt;strong&gt;classList&lt;/strong&gt; holds an instance of &lt;strong&gt;DOMTokenList&lt;/strong&gt;,&lt;strong&gt; &lt;/strong&gt;which is a new list type that includes a set of space separated tokens. The &lt;strong&gt;DOMTokenList &lt;/strong&gt;has the following API:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;length&lt;/strong&gt; – a property for the length of the list.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;item(index)&lt;/strong&gt; – a function that returns the list item that exists in the given index.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;contains(token)&lt;/strong&gt; – a function that returns true if the list contains the given token. Else it returns false.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;add(token)&lt;/strong&gt; – a function to add a given new token to the list.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;remove(token)&lt;/strong&gt; – a function to remove a given token from the list.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;toggle(token)&lt;/strong&gt; – a function that adds the token to the list if it doesn’t exists. If the token exists it is being removed from the list.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;The &lt;strong&gt;classList&lt;/strong&gt; property is read-only and in order to manipulate it you must use the previous &lt;strong&gt;DOMTokenList &lt;/strong&gt;API. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Here are some examples of using the &lt;strong&gt;classList&lt;/strong&gt; property and the &lt;strong&gt;DOMTokenList &lt;/strong&gt;API:&lt;/p&gt;  &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;// Adds a red class to a div element&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;div.classList.add(&lt;span style="color:#006080;"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;// Removes a blue class from a div element&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;div.classList.remove(&lt;span style="color:#006080;"&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;// If the visible class is set on the element it will be removed.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;// Else the visible class will be added to the div&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;div.classList.toggle(&lt;span style="color:#006080;"&gt;&amp;quot;visible&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;// Will output to the console &amp;#39;true&amp;#39; if the visible class exists. &lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;// Else it will output &amp;#39;false&amp;#39;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;console.log(div.classList.contains(&lt;span style="color:#006080;"&gt;&amp;quot;visible&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;classList Support in Browsers&lt;/h3&gt;

&lt;p&gt;As in all HTML5 new features, not all the browsers support the &lt;strong&gt;classList&lt;/strong&gt; property. To see if you can use the &lt;strong&gt;classList &lt;/strong&gt;property, you can visit the &lt;a href="http://caniuse.com/classlist" target="_blank"&gt;&lt;strong&gt;can I use&lt;/strong&gt;&lt;/a&gt; website.&lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;HTML5 &lt;strong&gt;classList&lt;/strong&gt; property can help you avoid string manipulations on the &lt;strong&gt;className&lt;/strong&gt; property. It is using a new list type, the &lt;strong&gt;DOMTokenList&lt;/strong&gt;, in order to expose its functionality. &lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1931131" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=WEaFLxxyvyQ:F0QsEomSVOc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=WEaFLxxyvyQ:F0QsEomSVOc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=WEaFLxxyvyQ:F0QsEomSVOc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=WEaFLxxyvyQ:F0QsEomSVOc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=WEaFLxxyvyQ:F0QsEomSVOc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/WEaFLxxyvyQ" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/HTML5/default.aspx">HTML5</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/21/quick-tip-html5-classlist-element-property.aspx</feedburner:origLink></item><item><title>Quick Tip – JavaScript Statement Count Do Count</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/PB1cjiwHDPY/quick-tip-javascript-statement-count-do-count.aspx</link><pubDate>Sat, 20 Apr 2013 13:09:30 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1927520</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1927520</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/20/quick-tip-javascript-statement-count-do-count.aspx#comments</comments><description>&lt;h1&gt;Quick Tip – JavaScript Statement Count Do Count&lt;/h1&gt;  &lt;p&gt;One of the things that we as developers don’t seem to mind about is the amount of statements that we write in our code. In JavaScript, the number of statements might affect the speed of the operations we want to perform. It is our responsibility to find statements that should be combined in order to decrease the execution time. This post include some examples of places to decrease the amount of statements.&lt;/p&gt;  &lt;h3&gt;Variable Declarations&lt;/h3&gt;  &lt;p&gt;One of the places that developers don’t care about is declaring variables. Lets look at a code with variable declarations:&lt;/p&gt;  &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; j = 0;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; length = arr.length;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;This code block shows the declaration of 3 variables in 3 different statements. This is a little expensive since we can declare all the variables in only one &lt;strong&gt;var&lt;/strong&gt; statement:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0,&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    j = 0,&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    length = arr.length;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This is micro optimization but in large scale JavaScript applications such optimizations can be much more crucial.&lt;/p&gt;

&lt;h3&gt;Arrays and Object Literals&lt;/h3&gt;

&lt;p&gt;Another place that you might be tempted to use a lot of statements is initialization of arrays or objects. Here is an example of wasting a lot of statements:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; arr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Array();&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;arr[0] = 0;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;arr[1] = 1;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; obj = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Object();&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;obj.name = &lt;span style="color:#006080;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;obj.value = &lt;span style="color:#006080;"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Those examples can be shortened in number of statements by using initialization using brackets or literal objects:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; arr = [0, 1];&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; obj = {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   name: &lt;span style="color:#006080;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   value: &lt;span style="color:#006080;"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;};&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Again this is micro optimization but any optimization count and limiting the number of statements means better performance.&lt;/p&gt;

&lt;h3&gt;Iterative Values&lt;/h3&gt;

&lt;p&gt;In loops we are using iterative values and increment/decrement them. Lets look at an example:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (i &amp;lt; 10) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   doSomething(i);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   i++;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The statements in the loop can be shortened using only one statement which will do the same thing because of the nature of &lt;strong&gt;increment operator&lt;/strong&gt;:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (i &amp;lt; 10) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   doSomething(i++);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;Returning Evaluated Boolean Value&lt;/h3&gt;

&lt;p&gt;From time to time I see developers use the following &lt;strong&gt;if&lt;/strong&gt; statement example to make it more comprehensive:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; checkSomething(value) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (makeCheck(value)) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;       &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;       &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In the code we check if a value is evaluated to true and then returning true. This is wasteful. The previous code can be shortened to:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; checkSomething(value) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; makeCheck(value);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Pay attention that this is only an example of a pattern that I see people using which can be shortened.&lt;/em&gt; &lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;The number of statements in your JavaScript code do count in your application performance. I know that all of the examples I showed are micro optimizations but in large scale JavaScript applications every micro optimization can help you create a faster application. &lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1927520" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=PB1cjiwHDPY:KtHXGoavdFg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=PB1cjiwHDPY:KtHXGoavdFg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=PB1cjiwHDPY:KtHXGoavdFg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=PB1cjiwHDPY:KtHXGoavdFg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=PB1cjiwHDPY:KtHXGoavdFg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/PB1cjiwHDPY" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/20/quick-tip-javascript-statement-count-do-count.aspx</feedburner:origLink></item><item><title>Quick Tip - Windows Store apps and StoreManifest</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/CBkrwLYnH1M/quick-tip-windows-store-apps-and-storemanifest.aspx</link><pubDate>Thu, 18 Apr 2013 07:24:16 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1915323</guid><dc:creator>Gil Fink</dc:creator><slash:comments>2</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1915323</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/18/quick-tip-windows-store-apps-and-storemanifest.aspx#comments</comments><description>&lt;h1&gt;Quick Tip - Windows Store apps and StoreManifest&lt;/h1&gt;  &lt;p&gt;Lately, a Windows Store app that I help to build was published to the Windows Store. Not a day passed and the customer contact us with a problem they are having. As it seems, the app exists in the Windows Store but it doesn’t appear in the store search results. After a quick investigation we learned that the customer license was OEM channel license and as such the app was deployed by default exclusively to the OEM channel and to public use. &lt;/p&gt;  &lt;h3&gt;Solving The Problem&lt;/h3&gt;  &lt;p&gt;In order to solve the problem we added a &lt;strong&gt;StoreManifest.xml&lt;/strong&gt; file to the app root. One of the xml elements that you can use in &lt;strong&gt;StoreManifest.xml&lt;/strong&gt; is the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj730519.aspx"&gt;&lt;strong&gt;ExclusiveOptOut&lt;/strong&gt;&lt;/a&gt; element. If &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj730519.aspx"&gt;&lt;strong&gt;ExclusiveOptOut&lt;/strong&gt;&lt;/a&gt; element is set to true, it configures the app not to be exclusively distributed through the OEM channel in the Windows Store. Here is an example of &lt;strong&gt;StoreManifest.xml&lt;/strong&gt; with the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj730519.aspx"&gt;&lt;strong&gt;ExclusiveOptOut&lt;/strong&gt;&lt;/a&gt; element:&lt;/p&gt;  &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#800000;"&gt;xml&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StoreManifest&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#ff0000;"&gt;xsi:noNamespaceSchemaLocation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;StoreManifest.xsd&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://schemas.microsoft.com/appx/2010/StoreManifest&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ProductFeatures&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ExclusiveOptOut&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ExclusiveOptOut&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ProductFeatures&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;StoreManifest&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;

  
&lt;/div&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;You should pay attention to your developer license and its restrictions. If you are OEM channel developer, you can distribute your app in the Windows Store. All you have to do is add a &lt;strong&gt;StoreManifest.xml&lt;/strong&gt; file with &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj730519.aspx"&gt;&lt;strong&gt;ExclusiveOptOut&lt;/strong&gt;&lt;/a&gt; element.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1915323" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=CBkrwLYnH1M:GwNbhMOU_e8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=CBkrwLYnH1M:GwNbhMOU_e8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=CBkrwLYnH1M:GwNbhMOU_e8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=CBkrwLYnH1M:GwNbhMOU_e8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=CBkrwLYnH1M:GwNbhMOU_e8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/CBkrwLYnH1M" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Windows+Store+app/default.aspx">Windows Store app</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/18/quick-tip-windows-store-apps-and-storemanifest.aspx</feedburner:origLink></item><item><title>SDP13 Windows Store app is Available</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/8sMg34cH-Cc/sdp13-windows-store-app-is-available.aspx</link><pubDate>Wed, 10 Apr 2013 06:07:10 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1879620</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1879620</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/10/sdp13-windows-store-app-is-available.aspx#comments</comments><description>&lt;h1&gt;SDP13 Windows Store app is Available&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://www.seladeveloperpractice.com/" target="_blank"&gt;&lt;img title="SDP13 Windows Store app is Available" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SDP13 Windows Store app is Available" src="http://blogs.microsoft.co.il/blogs/gilf/SDPLogo_4BE53FC6.png" width="525" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.seladeveloperpractice.com/"&gt;&lt;strong&gt;SELA Developer Practice&lt;/strong&gt;&lt;/a&gt; (SDP) is &lt;a href="http://www.selagroup.com/"&gt;&lt;strong&gt;Sela Group&lt;/strong&gt;&lt;/a&gt;’s annual conference. The next scheduled conference will occur between May 5-9, 2013. I’ve written about the conference in a &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2013/01/18/sela-developer-practice-conference-is-on-the-way.aspx"&gt;&lt;strong&gt;previous post&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Yesterday, we launched a new companion &lt;a href="http://apps.microsoft.com/windows/en-US/app/sela-developer-practice/8ca35721-29c8-460c-a51e-88936fb09f13" target="_blank"&gt;&lt;strong&gt;Windows Store app&lt;/strong&gt;&lt;/a&gt; for the conference. I had the pleasure of developing the app so if you find any bugs or have feature requests please don’t hesitate to &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/contact.aspx" target="_blank"&gt;&lt;strong&gt;contact me&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;App Features&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Browse through sessions and speakers &lt;/li&gt;    &lt;li&gt;Browse through conference tracks &lt;/li&gt;    &lt;li&gt;Explore speaker details&lt;/li&gt;    &lt;li&gt;Explore session details&lt;/li&gt;    &lt;li&gt;Send a register request&lt;/li&gt;    &lt;li&gt;Add sessions or tutorials to favorites page&lt;/li&gt;    &lt;li&gt;Search for sessions, speakers and tracks&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;A Glimpse at the app&lt;/h3&gt;  &lt;p&gt;Here are some screen shots taken from the app:&lt;/p&gt;  &lt;p&gt;&lt;img title="SDP13 Win8 App" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SDP13 Win8 App" src="http://blogs.microsoft.co.il/blogs/gilf/SDP13Win8App_75C4F254.jpg" width="640" height="360" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img title="SDP13 Win8 App" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SDP13 Win8 App" src="http://blogs.microsoft.co.il/blogs/gilf/SDP13Win8App2_1AC1F127.jpg" width="640" height="360" /&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1879620" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=8sMg34cH-Cc:xxMGeSVgQZI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=8sMg34cH-Cc:xxMGeSVgQZI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=8sMg34cH-Cc:xxMGeSVgQZI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=8sMg34cH-Cc:xxMGeSVgQZI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=8sMg34cH-Cc:xxMGeSVgQZI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/8sMg34cH-Cc" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/WinJS/default.aspx">WinJS</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Windows+Store+app/default.aspx">Windows Store app</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/10/sdp13-windows-store-app-is-available.aspx</feedburner:origLink></item><item><title>Quick Tip – The JavaScript arguments Object</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/GKV2f_g076g/quick-tip-the-javascript-arguments-object.aspx</link><pubDate>Fri, 05 Apr 2013 13:18:57 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1861234</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1861234</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/05/quick-tip-the-javascript-arguments-object.aspx#comments</comments><description>&lt;h1&gt;Quick Tip – The JavaScript arguments Object&lt;/h1&gt;  &lt;p&gt;Yesterday I delivered a session about JavaScript and mentioned the &lt;strong&gt;arguments&lt;/strong&gt; object. I was surprised that most of the attendees didn’t know the object so I decided to write this post. &lt;/p&gt;  &lt;h3&gt;The arguments Object&lt;/h3&gt;  &lt;p&gt;The &lt;strong&gt;arguments&lt;/strong&gt; object is available inside every JavaScript function body. As its name implies, it stores the arguments that the function receives. For example, if a function is passed two arguments, you can use them by their name or using the following code:&lt;/p&gt;  &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; foo(first, second) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   console.log(arguments[0]); &lt;span style="color:#008000;"&gt;// will log the data of first &lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   console.log(arguments[1]); &lt;span style="color:#008000;"&gt;// will log the data of second&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


You can also set the arguments using the &lt;strong&gt;arguments&lt;/strong&gt; object. The following code will set the first argument to 1:

&lt;br /&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; foo(first, second) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   arguments[0] = 1;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   console.log(first); &lt;span style="color:#008000;"&gt;// will output 1&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Even though you might think that the &lt;strong&gt;arguments&lt;/strong&gt; object is an array, it isn’t the case and non of JavaScript array functions exists in that object. The &lt;strong&gt;arguments&lt;/strong&gt; object has only two properties:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;length – the number of arguments received by the function&lt;/li&gt;

  &lt;li&gt;callee – the currently executing function&amp;#160; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;arguments Use Examples&lt;/h3&gt;

&lt;p&gt;So, you might think what is the big deal with the &lt;strong&gt;arguments&lt;/strong&gt; object? The answer is the dynamic nature of JavaScript language. For example, here is a &lt;strong&gt;sum&lt;/strong&gt; function that can receive any number of arguments:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; sum() {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; result = 0;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; arguments.length; i++) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;      result += arguments[i];&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; result;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;console.log(sum()); &lt;span style="color:#008000;"&gt;// will output 0&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;console.log(sum(1)); &lt;span style="color:#008000;"&gt;// will output 1&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;console.log(sum(1, 2)); &lt;span style="color:#008000;"&gt;// will output 3&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;console.log(sum(1, 2, 3)); &lt;span style="color:#008000;"&gt;// will output 6&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Another example can be declaring an API function that might get an argument to set some element’s value or else it returns the element’s value:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; val(htmlElement) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (arguments[1]) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;      htmlElement.value = arguments[1];  &lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;      &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; htmlElement.value;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; elm = document.getElementById(&lt;span style="color:#006080;"&gt;&amp;#39;elm&amp;#39;&lt;/span&gt;); &lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;console.log(val(elm));&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;val(elm, &lt;span style="color:#006080;"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;console.log(val(elm));&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If the webpage has a &lt;strong&gt;elm&lt;/strong&gt; textbox the value of the textbox will be logged and then changed to “Hello”. &lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;arguments&lt;/strong&gt; object stores the function passed arguments and is useful part of the JavaScript language. It is mainly used in API functions and can help in function overloading behavior.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1861234" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=GKV2f_g076g:hFhQo4H9FHQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=GKV2f_g076g:hFhQo4H9FHQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=GKV2f_g076g:hFhQo4H9FHQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=GKV2f_g076g:hFhQo4H9FHQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=GKV2f_g076g:hFhQo4H9FHQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/GKV2f_g076g" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/05/quick-tip-the-javascript-arguments-object.aspx</feedburner:origLink></item><item><title>Quick Tip – The Order Of JavaScript Operations Do Count</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/AHHuo6VnuBw/quick-tip-the-order-of-javascript-operations-do-count.aspx</link><pubDate>Tue, 02 Apr 2013 05:26:17 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1849776</guid><dc:creator>Gil Fink</dc:creator><slash:comments>2</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1849776</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/02/quick-tip-the-order-of-javascript-operations-do-count.aspx#comments</comments><description>&lt;h1&gt;Quick Tip – The Order Of JavaScript Operations Do Count&lt;/h1&gt; &lt;p&gt;Continuing the quick JavaScript performance tips (&lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/28/quick-tip-too-much-dom-manipulations-can-hurt-you.aspx" target="_blank"&gt;&lt;strong&gt;tip1&lt;/strong&gt;&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/31/quick-tip-change-css-classes-and-not-element-styles.aspx" target="_blank"&gt;&lt;strong&gt;tip2&lt;/strong&gt;&lt;/a&gt;) I wrote, here is another thing to consider when writing your JavaScript code. The order of your operations can decrease your performance. Sometimes all you have to do is think about what you are doing and then you might avoid pitfalls like in the next scenario. &lt;/p&gt; &lt;h3&gt;The Scenario&lt;/h3&gt; &lt;p&gt;Lets look at an example of adding a new div element to the Document Object Model (DOM):&amp;nbsp;&amp;nbsp; &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt; &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; addDiv(parentElement, text) {&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; element = document.createElement(&lt;span style="color:#006080;"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;  parentElement.appendChild(element);&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  element.textContent = text;&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The function will add a new div element to the parent element and then change its text. What’s the problem with that? We are doing a trivial thing. The problem is the order of the operations which can trigger two reflows, one for appending the child and the other for changing the text. &lt;/p&gt;
&lt;h3&gt;Suggested Solution&lt;/h3&gt;
&lt;p&gt;Lets change the previous code sample and avoid the problem:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
&lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; addDiv(parentElement, text) {&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; element = document.createElement(&lt;span style="color:#006080;"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;  element.textContent = text;&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;nbsp; parentElement.appendChild(element);&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;/pre&gt;&lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Putting the &lt;strong&gt;appendChild&lt;/strong&gt; function at the end solves the problem and might trigger only one reflow. All the changes to the div are being done in memory and not on a DOM element. &lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;The order of operations do count when dealing with JavaScript and browsers. When you have a set of operations don’t write the code as is, test it and check that you are not falling into pitfalls like triggering reflows.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1849776" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=AHHuo6VnuBw:krjA7cRgu_w:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=AHHuo6VnuBw:krjA7cRgu_w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=AHHuo6VnuBw:krjA7cRgu_w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=AHHuo6VnuBw:krjA7cRgu_w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=AHHuo6VnuBw:krjA7cRgu_w:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/AHHuo6VnuBw" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/04/02/quick-tip-the-order-of-javascript-operations-do-count.aspx</feedburner:origLink></item><item><title>Quick Tip – Change CSS Classes and Not Element Styles</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/xhRYjCruea4/quick-tip-change-css-classes-and-not-element-styles.aspx</link><pubDate>Sun, 31 Mar 2013 12:55:25 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1843160</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1843160</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/31/quick-tip-change-css-classes-and-not-element-styles.aspx#comments</comments><description>&lt;h1&gt;Quick Tip – Change CSS Classes and Not Element Styles&lt;/h1&gt;  &lt;p&gt;A few days ago I wrote a &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/28/quick-tip-too-much-dom-manipulations-can-hurt-you.aspx" target="_blank"&gt;&lt;strong&gt;quick tip&lt;/strong&gt;&lt;/a&gt; to ensure only one reflow when you need to manipulate the Document Object Model (DOM). Continuing that post, here is another JavaScript mistake I’m seeing from time to time and a way to go around it. &lt;/p&gt;  &lt;h3&gt;The Scenario&lt;/h3&gt;  &lt;p&gt;You need to change some element’s style as a response to some event. Here is a simple function that contains the problem:&lt;/p&gt;  &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; changeElementStyle(element) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    element.style.color = &lt;span style="color:#006080;"&gt;&amp;#39;#fff&amp;#39;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    element.style.backgroundColor = &lt;span style="color:#006080;"&gt;&amp;#39;#000&amp;#39;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    element.style.width = &lt;span style="color:#006080;"&gt;&amp;quot;100px&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you read my &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/28/quick-tip-too-much-dom-manipulations-can-hurt-you.aspx" target="_blank"&gt;&lt;strong&gt;previous post&lt;/strong&gt;&lt;/a&gt;, you know that every single DOM manipulation including style changes can trigger a reflow. In the previous code we have three potential reflows. &lt;/p&gt;

&lt;h3&gt;Suggested Solution&lt;/h3&gt;

&lt;p&gt;A way to solve the previous problem is using CSS classes instead of manipulating the element’s style. First, you will have to add a new class in your CSS file. Here is the previous style changes as a CSS class:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#cc6633;"&gt;.changedstyle&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#fff;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;background-color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#000;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;width&lt;/span&gt;: &lt;span style="color:#006080;"&gt;100px;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Now change the previous function to the following function:&lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; changeElementStyle(element) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    element.className = &lt;span style="color:#006080;"&gt;&amp;#39;changedstyle&amp;#39;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Now we will have only one optional reflow instead of three and that is better.&lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;When you are manipulating your DOM you should remember the Browser reflow process even if it is only simple style change. You can’t control when reflows occur but you can minimize their impact on your app performance.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1843160" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=xhRYjCruea4:3WjbpHRxO1I:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=xhRYjCruea4:3WjbpHRxO1I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=xhRYjCruea4:3WjbpHRxO1I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=xhRYjCruea4:3WjbpHRxO1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=xhRYjCruea4:3WjbpHRxO1I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/xhRYjCruea4" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/31/quick-tip-change-css-classes-and-not-element-styles.aspx</feedburner:origLink></item><item><title>Quick Tip – Too Much DOM Manipulations Can Hurt You</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/0Ekdw1O3d7o/quick-tip-too-much-dom-manipulations-can-hurt-you.aspx</link><pubDate>Thu, 28 Mar 2013 14:07:31 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1834331</guid><dc:creator>Gil Fink</dc:creator><slash:comments>3</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1834331</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/28/quick-tip-too-much-dom-manipulations-can-hurt-you.aspx#comments</comments><description>&lt;h1&gt;Quick Tip – Too Much DOM Manipulations Can Hurt You&lt;/h1&gt;  &lt;p&gt;Lately, I had a few consulting sessions for customers about JavaScript performance. One of the things that repeated in all of the apps I saw was the misunderstanding of too much Document Object Model (DOM) manipulations implications on app performance. There are a lot of good articles about the subject and this post will only cover one method to increase JavaScript performance. The scenario is based on a code I saw at a customer. &lt;/p&gt;  &lt;h3&gt;DOM Manipulations and Reflows&lt;/h3&gt;  &lt;p&gt;When we build web apps, we use JavaScript to manipulate the DOM and to update the web pages we build. One of the things that we should be aware of is browser reflows. Reflow is a browser process which determines how the page should be displayed to the user. Every single DOM manipulation (for example changes in CSS or adding/updating/removing elements) can trigger a reflow. Reflows can take some time and affect the performance of your web page. A lot of reflows can decrease the app performance and make it sluggish and slow.&amp;#160; &lt;/p&gt;  &lt;h3&gt;The Customer’s Problem&lt;/h3&gt;  &lt;p&gt;In the customer scenario they needed to create a big DOM part according to some data they received from the server. The problem was that they made changes to the DOM for each element that they got. Since we are talking about adding and manipulating a lot of elements the performance of the app was really bad. The first thing I did was to open Chrome developer tools and to capture their app in the Timeline. What I saw was that a lot of app time was spent on rendering and painting. Then, I asked the developer to show me the code that create the DOM part and saw that he created the new DOM part using jQuery &lt;strong&gt;each&lt;/strong&gt; function and appending the created elements straight into the DOM in each iteration. Here is a simple example of such operation without using jQuery &lt;strong&gt;each&lt;/strong&gt; function:&lt;/p&gt;  &lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; addElements(element) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; div;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; 5; i++) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        div = document.createElement(&lt;span style="color:#006080;"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        div.textContent = &lt;span style="color:#006080;"&gt;&amp;#39;added&amp;#39;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        element.appendChild(div);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In the example, five div elements are added to a given element. In each iteration a reflow process might be triggered due to changes in the DOM and cause a decrease in the performance. &lt;/p&gt;

&lt;h3&gt;Suggested Solution&lt;/h3&gt;

&lt;p&gt;A way to solve the previous problem is using a document fragment and appending it to the DOM. All the document fragment’s elements will be appended to the supplied element and we will have only one reflow. Here is the fixed code block: &lt;/p&gt;

&lt;div style="overflow:auto;cursor:text;font-size:8pt;border-top:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right:gray 1px solid;border-bottom:gray 1px solid;padding-bottom:4px;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:gray 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; addElementsBetter(element) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; div,&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        fragment = document.createDocumentFragment();&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; 5; i++) {&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        div = document.createElement(&lt;span style="color:#006080;"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        div.textContent = &lt;span style="color:#006080;"&gt;&amp;#39;added&amp;#39;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        fragment.appendChild(div);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    element.appendChild(fragment);&lt;/pre&gt;

    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
As you can see, I’m using the &lt;strong&gt;document.createDocumentFragment&lt;/strong&gt; function to create a &lt;strong&gt;DocumentFragment&lt;/strong&gt; element. Then, I’m appending all the created divs to that element. After the loop’s end I’m appending the fragment to the element.

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;After fixing the problem we managed to decrease the performance of the app by ~50%. The app’s code is doing all the manipulations in memory and only in the end the change is appended to the DOM. Understanding what can cause performance problems can help you avoid those problems in the future.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1834331" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=0Ekdw1O3d7o:n7VMzbTxEXI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=0Ekdw1O3d7o:n7VMzbTxEXI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=0Ekdw1O3d7o:n7VMzbTxEXI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=0Ekdw1O3d7o:n7VMzbTxEXI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=0Ekdw1O3d7o:n7VMzbTxEXI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/0Ekdw1O3d7o" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/28/quick-tip-too-much-dom-manipulations-can-hurt-you.aspx</feedburner:origLink></item><item><title>Building Scalable JavaScript Apps – A New SDP13 Session</title><link>http://feedproxy.google.com/~r/GilFinkBlog/~3/kPzi-OB7IRo/building-scalable-javascript-apps-a-new-sdp13-session.aspx</link><pubDate>Sun, 24 Mar 2013 13:37:55 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1823985</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment>http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=1823985</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/24/building-scalable-javascript-apps-a-new-sdp13-session.aspx#comments</comments><description>&lt;h1&gt;Building Scalable JavaScript Apps – A New SDP13 Session&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://seladeveloperpractice.com" target="_blank"&gt;&lt;img title="SDPLogo" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="SDPLogo" src="http://blogs.microsoft.co.il/blogs/gilf/SDPLogo_52E83813.png" width="525" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.seladeveloperpractice.com/"&gt;&lt;strong&gt;SELA Developer Practice&lt;/strong&gt;&lt;/a&gt; (SDP) is &lt;a href="http://www.selagroup.com/"&gt;&lt;strong&gt;Sela Group&lt;/strong&gt;&lt;/a&gt;’s annual conference. The next scheduled conference will occur between May 5-9, 2013. I’ve written about SDP13 in a &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2013/01/18/sela-developer-practice-conference-is-on-the-way.aspx" target="_blank"&gt;&lt;strong&gt;previous post&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Lately, we added a new session that your truly will be delivering called &lt;strong&gt;Building Scalable JavaScript Apps&lt;/strong&gt;.     &lt;br /&gt;Here is its abstract: “Building and maintaining big and scalable JavaScript web apps is a hard task.     &lt;br /&gt;So how you build a big and scalable JavaScript app without being driven into madness?    &lt;br /&gt;Using and combining proven JavaScript patterns will do the trick.     &lt;br /&gt;In this session we will talk about the patterns behind some of the largest JavaScript apps and how to apply them in your own app.”&lt;/p&gt;  &lt;p&gt;In closing, I encourage you to check out the list of &lt;a href="http://www.seladeveloperpractice.com/sessions"&gt;&lt;strong&gt;sessions&lt;/strong&gt;&lt;/a&gt; and &lt;a href="http://www.seladeveloperpractice.com/speakers"&gt;&lt;strong&gt;speakers&lt;/strong&gt;&lt;/a&gt;.     &lt;br /&gt;See you there!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1823985" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=kPzi-OB7IRo:W68xX-ByN4k:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=kPzi-OB7IRo:W68xX-ByN4k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=kPzi-OB7IRo:W68xX-ByN4k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?i=kPzi-OB7IRo:W68xX-ByN4k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GilFinkBlog?a=kPzi-OB7IRo:W68xX-ByN4k:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GilFinkBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GilFinkBlog/~4/kPzi-OB7IRo" height="1" width="1"/&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Javascript/default.aspx">Javascript</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/gilf/archive/2013/03/24/building-scalable-javascript-apps-a-new-sdp13-session.aspx</feedburner:origLink></item></channel></rss>
