Super Tricky Javascript quiz, need to figure out about the answer
<pre><code>   //1st question
   var x = 4,
     obj = {
       x: 3,
       bar: function() {
         var x = 2;
         setTimeout(function() {
           var x = 1;
           alert(this.x);
         }, 1000);
       }
     };
   obj.bar();

   //2nd question
   function foo(a) {
     arguments[0] = 2;
     alert(a);
   }
   foo(1);
</code></pre>

<p>1.why it returns 4 instead of 1? i thought this.x refer to 1, but it seems wrong....i just dont understand why it returns 4</p>

<p>2.why it return alert 2 instead of 1, i thought i pass a to function a, and as far as i know, i pass 1 to function foo, and 1 should be alerted because of a(which is 1 when i pass)....i just don't understand why it alert 2</p>