title: Why does JavaScript hoist variables?
body: <p><strong>Why does JavaScript hoist variables?</strong></p>
  
  <p>What was the rationale of the designers when they decided to implement hoisting?
  Are there any other popular languages that do this?</p>
  
  <p>Please provide relevant links to documentation and/or records.</p>