ES6中的重复变量声明

时间:2018-01-16 23:38:26

标签: ecmascript-6

我想知道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 声明变量,那么它不应该重新分配值。为什么会这样?

2 个答案:

答案 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

Print