title: Does hoisting takes place at once for the full code or by nested-function-levels
body: <p>Hy guys. I dont understand something regarding the hoisting and it can be it is my bad, but I didnt find any answer, neather here nor on google, thatswhy I ask, thanks for reading.</p>
  
  <p>So I dont understand, As the javascript engine gets my code below and starts to scan through, 
      will be the whole code with all functions and nested functions scanned threw, until to the very last scope? 
      And the creation phase of all function will take place for the first scan (or with others words will the full code be scanned just once and prepared everything for each functions)?</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>/* Global execution context*/
  
  function myFirst(){ /*Scanner meets this code and hoists it*/
    var A = "12"
  
    return function myFirstB(){ /*As the scanner arrived here and 
  scanns threw this function during the parents hoisting period ( or just before the global contexts execution phase) will it be hoisted  as well, that it gets [[Scopes]] property? So that when I call it in the last line as a closure, it can remember on, that variable "A" is in its outer-environment?*/
        console.log(A) 
      } //myFirstB()
  
  } // myFirst()
  
  function mySecond(){
      alert("one")
  }
  
  var myClosure = myFirst();
  myClosure(); /*before beeing called does this function have already [[Scopes]] property/scope-chain?*/</code></pre>
  </div>
  </div>
  </p>
  
  <p>Or the hoisting happens nest-level by nest-level? So I mean at first those functions will be hoisted which are defined in the global context?
          and then as one of those functions gets invoked and its execution-contexts execution phase starts, will be its nested functions hoisted?</p>
  
  <p>I am investigating this, because I dont really udnerstand, how a nested function remembers on, in which lexical environment/function has it been defined, if it wasnt already at least hoisted, that it has a [[Scopes]] property, which preserves its scope chain</p>
  
  <p>The probelm is all the articles I saw until now and even the ecmascript 6 documentation says only, that the hoisting happens, if the scanner meets a function definitiona and then the scope property will be created with the scope chain and variable object the arguments object and the "this" keyword, but I didnt find any material which would talk about, if the nested functions (which are preserved in the variable object, coupled there with a reference to their function body in the memory) will be at least hoisted as well (at the same time, their parent function is hoisted) and soo they get a scope chain to remember on their outer environment, if they are called outside from there outer-environment</p>
  
  <p>Thanks a lot guys for reading threw my tonns of words, if you can answer it or if you have an article which talks about this aspect as well of hoisting, I would really appriciate</p>