JavaScript : Let const and var



 // ******* ECMA Script ********


// Features of ECMAScript 2015 also known as ES6

// LET and CONST
// Template String
// Default Arguments
// Rest Operators
// Destructuring
// Object properties
// Arrow Function
// Spread Operator

// 1. LET VS CONST VS VAR


// let myName = "Himanshu Tiwari";
// console.log(myName);


// myName = "Aditya Tiwari"
// console.log(myName);

// const

// const myName = "Himanshu Kumar";
// console.log(myName);

// myName = "Aditya Tiwari"
// console.log(myName);


// function bioData(){
//     let myFirstName = "Himanshu";
//     console.log(myFirstName);

//     if(true){
//         let myLastName = "Tiwari";
//         console.log("inner " + myLastName);
//         console.log("inner " + myFirstName);
//     }

//     console.log("innerOuter " + myLastName);
// }

// bioData();

// var => function scope.
// let and const => block scope.


// 2. Template Literals (Template strings)

// JavaScript program to print table for given number(8).


// for(let num = 1; num<=10; num++){
//     let tableOf = 8;
//     console.log(`${tableOf} * ${num} = ${tableOf * num}`);
// }


// 3. Default parameters 

// Default function parameters allow named parameters to be 
// initialized with default values if no value or undefined is passed.

// function mult(a,b=5){
//     return total = a*b;
// }


4. Destructuring In ES6

// THe destructuring assignment syntax is a javascript expression
// that makes it possible to unpack the values from arrays,
// or properties from objects, into distinct variables.

// ARRAY DESTRUCTURING 

// const myBioData = ['himanshu','kumar',19];

// 👎
// let myFName = myBioData[0];
// let myFName = myBioData[1];
// let myFName = myBioData[2];
// console.log(myAge);

// 👍
// let [myFName,myLName,MyAge] = myBioData;
// console.log(myFName);

// OBJECT DESSTRUCTURING 

// 👎
// const myBioData = {
//     myFName : "Himanshu",
//     myLName : "Tiwari",
//     myAge : 19,
// }
//     let myAge = myBioData.myAge;
//     console.log(myAge);

//     👍
//     let {myFName,myLName,myAge} = myBioData;
//     console.log(myLName);

// 5. Object properties :-

// we can now use dynamic proeprties

//     let myName = "HK";
//     let myBio = {
//        [myName]: "is my name ",
//        26 : "is my age"

//     }
// console.log(myBio);


// If key and value both are same then no need to write key and value.

// let myName = "Hk";
// let myAge = 19;

// const myBio = {myName,myAge};
// console.log(myBio);


// console.log(mult(4));


// 6. Fat Arrow Function

// Normal way to writing Function

// function sum(){
//     let a = 5;
//     let b = 6;
//     let sum = a+b;
//     return `The sum of two numbers is ${sum}`;
// }

// console.log(sum());

// How to convert into Fat Arrow Function

// const sum = () => {
//     let a = 5;
//     let b = 6;
//     let sum = a+b;
//     return `The sum of two numbers is ${sum}`;
// }
// console.log(sum());

// one line solution

// const sum = () => `The sum of two number are ${(a=5)+(b=4)}`
// console.log(sum());

// 7. Spread Operator :-

// const colors = ['red','green','yellow','blue'];
// const myColors = ['red','green','yellow','blue','white','black'];

// const myFavColor = [...colors , 'white','black'];
// console.log(myFavColor);