我想知道JS引擎如何处理ES6中的变量声明,如:
无论如何:
let V1 = "let Hello";
const V1 = "const Hello";
V1 = "reassigned Hello"
或者:
const V1 = "const Hello";
let V1 = "let Hello";
V1 = "reassigned Hello"
V1总是"重新分配Hello"
我认为如果用 const 声明变量,那么它不应该重新分配值。为什么会这样?
答案 0 :(得分:1)
您在评论中提到您正在关注React tutorial并使用他们的CodePen示例。
此笔设置为使用Babel将ES6代码转换为ES5,因此您的分配工作的原因是:
let V1 = "let Hello";
const V1 = "const Hello";
实际上是这样编译和执行的:
var V1 = "let Hello";
var V1 = "const Hello";
如果您为笔禁用Babel并使用本机支持const
的浏览器(即任何现代浏览器),您将看到异常。
答案 1 :(得分:-1)
如果您在Chrome中进行测试,例如,您将获得
Uncaught SyntaxError: Identifier 'V1' has already been declared