<script type="text/javascript">
  var number = "10";
  (function(){
    alert(number);    
    alert(eval('number=22'));
  })();
  var func = function() {
      alert (new Function( 'return (' + number + ')' )());
  }
  func(); // prints 22.
</script>
It first alerts 10, then alerts 22 then why is it alerting 22 again instead of 10. Does eval function overrides my variable in global scope.
 
     
     
     
    