ES2015中是否声明对象const
或let
不会影响对其属性的赋值:
> let a = {}
undefined
> const b = {}
undefined
> a.y = 3
3
> b.y = 3
3
> a
{ y: 3 }
> b
{ y: 3 }
是否有充分的理由选择一种形式的声明而不是另一种?
答案 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 变量的初始值。它可以是任何法律表达。
从我的观点来看,这完全取决于你想用它们做什么。我发现上面的陈述令人信服,足以与你分享。