title: Why can't a function in a block-level scope change a formal parameter?
body: <pre><code>;(function(a){
      if(true){
          function a(){}
      }
      console.log(a) // 1
  })(1)
  
  ;(function(){
      var a = 0
      if(true){
          function a(){}
      }
      console.log(a) // function a(){}
  })()
  </code></pre>
  
  <p>Why can't a function in a block-level scope change a formal parameter?</p>