是否可以在javascript中的声明语句后为const变量赋值初始值?

时间:2013-09-05 08:17:18

标签: javascript

是否可以在javascript中的decleration语句之后为const变量分配初始值,如下所示?我已经尝试过,但没有奏效。我想知道是否存在其他任何方式。

const x;

x = 5;

感谢。

5 个答案:

答案 0 :(得分:5)

No

必须在声明时指定常量,之后不能更改。

const x;
x = 2;
console.log(x); // == undefined

const z = 4;
z = 10;
console.log(z); // == 4

答案 1 :(得分:2)

  

常量的值不能通过重新赋值来改变,并且不能重新声明常量。因此,尽管可以在不初始化的情况下声明常量,但这样做是没用的。

- MDN

当然,在不支持const的浏览器上很有可能,但我怀疑这就是你所要求的。

答案 2 :(得分:1)

根据Harmony wikiES6 draft,初始值必须出现在const声明中。

维基说:

  

语法要求:const声明必须为每个声明的标识符

设置初始值设定项

这说明了我自己。

草案没有明确说明这个要求,但可以从语法定义中推断出来(如果我理解正确的话。它说:

LexicalBinding :
    BindingIdentifier Initialiseropt
    BindingPattern Initialiser

  

LexicalBinding BindingIdentifier

     

如果包含此作品的 LexicalDeclaration IsConstantDeclaration true,则语法错误。

根据我的理解,LexicalBinding生成规则不能BindingIdentifier Initialiseropt const,因此它必须是BindingPattern Initialiser,正如您所看到的,初始值不是{{1}}标记为可选。

答案 3 :(得分:1)

怀疑时,伸手去拿Spec!

或者就此而言,截至今天,proposed specHarmony

  

语法要求:const声明必须为每个声明的标识符

设置初始值设定项

所以const x;应该是非法的。当然,实施方式各不相同。某些浏览器可能会允许您将此变量初始化为undefined

答案 4 :(得分:0)

const x = 5;

但这并没有得到广泛支持,即它将在Internet Explorer上失败。适用于谷歌浏览器。 我不建议在javascript中使用const关键字,因为它没有很好地实现...