对象应该声明为const还是让?

时间:2016-08-26 09:04:42

标签: javascript ecmascript-6

ES2015中是否声明对象constlet不会影响对其属性的赋值:

> let a = {}
undefined
> const b = {}
undefined
> a.y = 3
3
> b.y = 3
3
> a
{ y: 3 }
> b
{ y: 3 }

是否有充分的理由选择一种形式的声明而不是另一种?

1 个答案:

答案 0 :(得分:9)

  

我赞成ES6中的const超过let。在JavaScript中,const意味着   标识符无法重新分配。 (不要与不可变的混淆   值。与真正的不可变数据类型不同,例如由   Immutable.js和Mori,const对象可以使属性发生变异。)

     

如果我不需要重新分配,const是我let的默认选择   因为我希望代码中的用法尽可能清晰。

     

当我需要重新分配变量时,我使用let。因为我用了一个   变量代表一件事,let的用例往往是   for循环或数学算法。

参考:https://medium.com/javascript-scene/javascript-es6-var-let-or-const-ba58b8dcde75#.9s2e58ihw

来自MDN的示例: const声明创建对值的只读引用。它并不意味着它拥有的值是不可变的,只是无法重新分配变量标识符。

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
  

nameN       常量的名称,可以是任何合法的标识符。值N       常数的值;这可以是任何法律表达。

let语句声明一个块作用域局部变量,可选择将其初始化为一个值。

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];
  

var1,var2,...,varN       变量名。它可以是任何合法的标识符。 value1,value2,...,valueN       变量的初始值。它可以是任何法律表达。

从我的观点来看,这完全取决于你想用它们做什么。我发现上面的陈述令人信服,足以与你分享。