Search code examples
javascriptkeywordlet

Why can I define something as 'let'?


I was experimenting with JS and jokingly tried to redefine let keyword and surprisingly it worked.

It does not work with any other keywords like while,const,var etc. Any reason why JS is working fine with this?

let = 'Weird'
console.log(let)
console.log(typeof let)
console.log(let.length)

let = ['Weird','Very Weird']
console.log(let)
console.log(typeof let)
console.log(let.length)

let = 80
console.log(let)
console.log(typeof let)
console.log(let/80)

Also another weird thing:

var let = 'Even More Weird'
console.log(let)
let = 50
console.log(let)
let = (x)=>x**2
console.log(let(3))


Solution

  • you can redeclare let if you don't specify strict mode by :

    "use strict"; // firt statement on the script
    ...
    

    it depends also in the engine that execute the code, in firefox(spiderMonkey engine) engine you would see an error : "Uncaught SyntaxError: redeclaration of let i", but in V8 in chrome if you don't specify a strict mode, it would work without problem