-
Notifications
You must be signed in to change notification settings - Fork 0
/
1-variables&Hoisting.js
71 lines (53 loc) · 2.43 KB
/
1-variables&Hoisting.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*Hoisting: Before execution, memory is created in which
variables are stored with the value undefined, and whole function code is stored
that's why variables (declared with var) and functions can be accessed before the line of code declaring them gets executes.
*/
console.log(name); //returns undefined -> concept of hoisting: before execution, in memory creation phase, varibales are assigned "undefiend"
var name="Muqaddas";
//-------------------------------------------------------
console.log(getname) //returns whole function-> concept of hoisting: before execution, in memory creation phase , whole function is stored in memory
console.log(getname()); //is invoked, because before execution, whole function is present in memory because of hoisting -prints what is returned
function getname()
{
console.log("muqaddas");
return "Muqaddas- returned from function"; //shows undefined, if there's no return statement
}
//-------------------------------------------------------
/* console.log(name1) let and const can't be accessed before initialization.
They are hoisted(given values undefined in memory creation phase)
but lies in script space(not in global).
can't be accessed until initialized*/
let name1="zahra"
// let name1="naqvi"; let can't be redeclared in same scope
/*const name;
name= "zahra"; const declaration and initialization should be on the same line*/
var name="zahra"; //var can be redeclared
console.log(name);
function redeclare()
{
let name1="redeclared zahra"; //let variable can be redeclared in a different scope
console.log(name1)
}
redeclare();
const number=10;
// number=11; type error: assignment of any other value to constant varibale
//-------------------------Block and Function Scope-----------------------------------------------------------------------------
let letscopecheck=1
if(true)
{
let letscope=2;
letscope++;
let letscopecheck=2;
letscopecheck++;
var varscope=2;
varscope++;
}
//console.log(letscope); let& const are block-scoped- can't be accessed outside of block
console.log(varscope); // output:3 , var is not block scoped , can be accessed outside of block
console.log(letscopecheck); //output1 ---from outside of block
function letvarscope()
{
let scopelet=1;
var scopevar=2;
}
//console.log(scopevar); var is function scoped,can't be accessed outide of a function