Skip to main content

Javascript ECMAScript6 New Feature

ECMAScript 6 Const



Const

In ECMAScript 6 we have const variable arrived. Does it work the same as C++ const?
Not exactly. I would even say, “not at all”.
When you declare something with 
const in ECMAScript 6, it means that the identifier can’t be reassigned. 

What does it mean? 

It means that you cannot declare that variable more than once. Because its binding is immutable
You have guaranty that no rebinding will happen to it. 
You will not be able to change its type.
If your const variable is a simple value, like stringnumberboolean etc. you also wouldn’t be able to change its value.
So let’s look how does it work:

Declaration

Very simple. Just use const instead of var :
    const brandColor = 'turquoise'; 
The value of a constant doesn’t have to to be known at compile time, but you must assign it a value exactly once.

Const and scopes

Redeclaring:

Constants can’t be redeclared.
    const num = 1;
    //1
    const num = 2;
    //Uncaught TypeError: Identifier 'num' has already been declared(…)

Function scope:

You can declare const inside the function scope with the same as outside it, but you actually have local scoped const.
    const num = 1;
   
    function setNum(){
        const num = 2;
        console.log(num);
    }
   
    setNum();
    //2;
   
    console.log(num);
    //1;
You cannot reach const outside scope:
    if(!num){
        const num = 2;
    }
    console.log(num);
    //Uncaught ReferenceError: num is not defined(…)
Ok that’s easy. But also you cannot reach const by this, because it is block-scoped:
    const date = new Date();
   
    console.log(this.date);
    //undefined

Deleting and changing value of const

You cannot change value or delete a simple constant variable.
    const a = 1;
   
    a++;
    //Uncaught TypeError: Assignment to constant variable.(…)
   
    delete a;
    //true
   
    console.log(a);
    //1

Const Objects

If you declare const Object, you will not be able to delete it, or make it array or string, but you will be able to declare, change and even delete values of your constObject.
    const params = {
        size: 2,
        color: 'gray'
    }
   
    params = {};
    //Uncaught TypeError: Assignment to constant variable.(…)
   
    params.size++;
    delete params.color;
   
    console.log(params)
    //Object {size: 3}
But there is the way to freeze the Object with its values:
    const obj = Object.freeze({
        'num': 3
    });
    obj.num = 4; //throws error

So where to use const ?

Use const when you don’t need reassign the identifier. In practice it is becoming the brand new var for objects and arrays.
Because if you need to change type of any of them, it seems you wrote bad, not semantic code.


Comments

Popular posts from this blog

Claims Class For security in .NET4.5 with C#

What is Claim ? A claim in the world of authentication and authorization can be defined as a statement about an entity, typically a user. A claim can be very fine grained: Ram is an admin Ram’s email address is Ram@yahoo.com Ram lives in Mumbai Tom’s allowed to view sales figures between 2009 and 2012 Tom’s allowed to wipe out the universe Claims originate from a trusted entity other than the one that is being described. This means that it is not enough that Tom says that he is an administrator. If your company’s intranet runs on Windows then Tom will most likely figure in Active Directory/Email server/Sales authorisation system and it will be these systems that will hold these claims about Tom.  The idea is that if a trusted entity such as AD tells us things about Tom then we believe them a lot more than if Tom himself comes with the same claims . This external trusted entity is called an  Issuer . The KEY in the key-value pairs is called a  Type  and the VALUE in the

Paytm integration

How to integrate Paytm to asp.net site   You will need to create an Checksum on your server. Kindly refer the dll file for the attachment.  Usage of CheckSum API: ·         Add provided “paytm.dll” as a “Reference” in your project. ·         Import namespace “paytm” in your Class with statement “using paytm”. ·         Now Generate CheckSum API as well as Verify CheckSum API are available as follows: o   String CheckSum.generateCheckSum(String masterKey, Dictionary<String, String> parameters) o   Boolean CheckSum.verifyCheckSum(String masterKey, Dictionary<String, String> parameters, StringcheckSum) ·         For Generating CheckSum, use following snippet code: String masterKey = “merchantKey” ; Dictionary<String, String> parameters = new Dictionary<string, string>(); parameters.Add("CHANNEL_ID", "WEB"); parameters.Add("TXN_AMOUNT", "1"); String checkSum = CheckSum.generateCheckSum(masterKey, parameters); ·        

Design Patterns

                                                      Design pattern 1. Factory Design Pattern  In Factory pattern, we create object without exposing the creation logic to the client and refer to newly created object using a common interface. Step 1 Create an interface IShape.cs public interface I Shape { void draw (); } Step 2 Create concrete classes implementing the same interface. Rectangle.cs public class Rectangle : I Shape { @Override public void draw () { C onsole.WriteLine ( "Inside Rectangle::draw() method." ); } } Square.cs public class Square : I Shape { @Override public void draw () { C onsole.WriteLine ( "Inside Square::draw() method." ); } } Circle.cs public class Circle : I Shape { @Override public void draw () { C onsole.WriteLine ( "Inside Circle::draw() method." ); } } Step 3 Create a Factory to gen