JavaScript
Hoisting in JavaScript -
Hoisting occurs because JavaScript engine will compile the code before its interpretation. The compiler actually considers var a = 2; as two different statements var a; and a = 2;. So the part of the compiler finds all the declaration first and then associate their assignment with their appropriate scopes.
It means both declaring and assigning a intial value.
Ex :
* Hoisting is Javascript`s default behavior of moving declarations to the top
* JavaScript Declarations are Hoisted
* It can not work on let / const
* In anonymous function also, it can not work
Declaration - Assigning & Initialization
Declaration : (Hoisted)
- Declaration means simply giving a name to the and it`s data type ( by default Global without data type).
- we can`t see their value until we invoke/ call it.
Ex:
    var a;
    function a(){}
Assigning :
Assigning means simply storing the value in a variable.
Ex :
    a = 5 ;
Initialization : (Not Hoisted)
It means both declaring and assigning a intial value.
Ex :
    var a=5;
Variable Hoisting..
* Scope Means availability, and place of the variables
    
    
Variable Hoisting..
* Scope Means availability, and place of the variables
    <script>
        // Variable Hoisting 
        // console.log(abc);
        // console.log(msg);
        var abc = 99;
        var msg = 199;
        console.log(abc);
        console.log(msg);
    </script>
    Function Scope & Function Hoisting..
<script>
<script>
        console.log(abc);
        function ramesh(){
            var abc = 99;  
            console.log(abc);  
        }
        ramesh();
        console.log(abc);
    </script>
    
   Block Scope..
   <script>
        // Block Scope
        {
        const abc =999;  // let,const will not work on block scope
        var msg = 799;
        //console.log(abc);
        }
        console.log(abc);
    </script>

 
 
 
