Is "let" not a reserved keyword in JavaScript

Is "let" not a reserved keyword in JavaScript

We can declare a new variable in JavaScript by using var, let, orconst keywords.

For Example,

var a = 10;
let b = 20;
const c = 40;

I was playing around with above syntax, and tried something silly.

var let = 100;
var const = 100;

And. the result was surprising. let variable was successfully created, but for const I got an syntax error.

let as a variable

You might be thinking why defining let as a variable did not give syntax error. I was thinking the same.

You might be curious to know why it happened. So, here goes your answer:

JavaScript have some reserved keywords which we can't use as a variable/identifier. Below is the list of reserved keywords as per ECMAScript 2015 (source MDN):

###Reserved Keywords### break, case, catch, class, const, continue, debugger, default, delete, do, else, export, extends, finally, for, function, if, import, in, instanceof, new, return, super, switch, this, throw, try, typeof, var, void, while, with, yield,

###Below are future reserved keywords ###

enum

###Reserved only when used inside a module ###

await

###Only reserved when used in strict mode ###

implements, interface, let, package, private, protected, public, static

So From above list, as let is reserved only when strict mode is used. So I tried below code:

"use strict";
var let = 100;

Now finally, it gives error when let is used as a identifier.

let.png

In same way we can use below keywords an identifier.

implements, interface, let, package, private, protected, public, static

In strict mode it will give syntax error.

Note: It is good idea to always give you identifier a meaningful name. Do not use reserved keyword as an identifier.

What's you thoughts, let me know in the comments.