document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-205509\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"cm\">/* This sample uses jQuery */<\/span><\/div><div class=\"line\" id=\"LC2\">&nbsp;<\/div><div class=\"line\" id=\"LC3\"><span class=\"cm\">/* This doesn&#39;t work.<\/span><\/div><div class=\"line\" id=\"LC4\"><span class=\"cm\"> *<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"cm\"> * Here, notice the success callback uses the data variable, except when called, <\/span><\/div><div class=\"line\" id=\"LC6\"><span class=\"cm\"> * the anonymous function can&#39;t access the data variable, since it&#39;s defined within<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"cm\"> * the scope of the anonymous object that&#39;s sent to the request() method.<\/span><\/div><div class=\"line\" id=\"LC8\"><span class=\"cm\"> */<\/span><\/div><div class=\"line\" id=\"LC9\"><span class=\"kd\">function<\/span> <span class=\"nx\">someEvent<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"kd\">var<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"s1\">&#39;update-success&#39;<\/span> <span class=\"o\">:<\/span> <span class=\"s2\">&quot;result_list&quot;<\/span><span class=\"p\">,<\/span> <span class=\"s1\">&#39;update-failure&#39;<\/span> <span class=\"o\">:<\/span> <span class=\"s2\">&quot;error_list&quot;<\/span> <span class=\"p\">};<\/span><\/div><div class=\"line\" id=\"LC11\">&nbsp;<\/div><div class=\"line\" id=\"LC12\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"nx\">request<\/span><span class=\"p\">({<\/span> <span class=\"nx\">url<\/span> <span class=\"o\">:<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nx\">success<\/span> <span class=\"o\">:<\/span> <span class=\"kd\">function<\/span><span class=\"p\">(<\/span><span class=\"nx\">response_html<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nx\">$<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;#&quot;<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">data<\/span><span class=\"p\">[<\/span><span class=\"s1\">&#39;update-success&#39;<\/span><span class=\"p\">]).<\/span><span class=\"nx\">html<\/span><span class=\"p\">(<\/span><span class=\"nx\">response_html<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC16\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">});<\/span><\/div><div class=\"line\" id=\"LC17\"><span class=\"p\">};<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;<\/div><div class=\"line\" id=\"LC19\"><span class=\"cm\">/* This works.<\/span><\/div><div class=\"line\" id=\"LC20\"><span class=\"cm\"> *<\/span><\/div><div class=\"line\" id=\"LC21\"><span class=\"cm\"> * Here, we&#39;ve moved the success callback out of the context of the anonymous object <\/span><\/div><div class=\"line\" id=\"LC22\"><span class=\"cm\"> * and set it as the context of the someEvent() function.  Thus, it will be able <\/span><\/div><div class=\"line\" id=\"LC23\"><span class=\"cm\"> * to access the data variable.<\/span><\/div><div class=\"line\" id=\"LC24\"><span class=\"cm\"> */<\/span><\/div><div class=\"line\" id=\"LC25\"><span class=\"kd\">function<\/span> <span class=\"nx\">someEvent<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"kd\">var<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"s1\">&#39;update-success&#39;<\/span> <span class=\"o\">:<\/span> <span class=\"s2\">&quot;result_list&quot;<\/span><span class=\"p\">,<\/span> <span class=\"s1\">&#39;update-failure&#39;<\/span> <span class=\"o\">:<\/span> <span class=\"s2\">&quot;error_list&quot;<\/span> <span class=\"p\">};<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;<\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"kd\">var<\/span> <span class=\"nx\">success_callback<\/span> <span class=\"o\">=<\/span> <span class=\"kd\">function<\/span><span class=\"p\">(<\/span><span class=\"nx\">response_html<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC29\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nx\">$<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;#&quot;<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">data<\/span><span class=\"p\">[<\/span><span class=\"s1\">&#39;update-success&#39;<\/span><span class=\"p\">]).<\/span><span class=\"nx\">html<\/span><span class=\"p\">(<\/span><span class=\"nx\">response_html<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"LC30\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">};<\/span><\/div><div class=\"line\" id=\"LC31\">&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC32\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"nx\">request<\/span><span class=\"p\">({<\/span> <span class=\"nx\">url<\/span> <span class=\"o\">:<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span><span class=\"p\">,<\/span><\/div><div class=\"line\" id=\"LC33\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nx\">success<\/span> <span class=\"o\">:<\/span> <span class=\"nx\">success_callback<\/span><\/div><div class=\"line\" id=\"LC34\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">});<\/span><\/div><div class=\"line\" id=\"LC35\"><span class=\"p\">};<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;<\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/205509/19079c80d86905cb0ee1bc25aef4f517ae1d88c1/Javascript%20scoping.js\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/205509#file_javascript scoping.js\" style=\"float:right;margin-right:10px;color:#666\">Javascript scoping.js<\/a>\n          <a href=\"http://gist.github.com/205509\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
