为什么我可以将某些东西定义为 'let'?

Why can I define something as 'let'?

我正在尝试使用 JS 并开玩笑地尝试重新定义 let 关键字,结果令人惊讶的是它起作用了。

它不适用于 whileconstvar 等任何其他关键字。 JS 可以正常工作的原因是什么?

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)

还有一件奇怪的事情:

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

如果您不指定严格模式,您可以重新声明 let :

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

它还取决于执行代码的引擎,在 firefox(spiderMonkey 引擎)引擎中你会看到一个错误:“Uncaught SyntaxError: redeclaration of let i”,但是在V8中在chrome中如果你不指定严格模式,它可以正常工作