1

Is it possible to assign initial value to a const variable after its decleration statement in javascript like below? I've tried it but didn't work. I wonder if any other ways exist.

const x;

x = 5;

Thanks.

4

5 回答 5

5

没有

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

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

const z = 4;
z = 10;
console.log(z); // == 4
于 2013-09-05T08:21:18.643 回答
2

常量的值不能通过重新赋值来改变,也不能重新声明常量。因此,虽然可以在不初始化的情况下声明一个常量,但这样做是没有用的。

--MDN _

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

于 2013-09-05T08:19:21.020 回答
1

根据Harmony wikiES6 草案,初始化程序必须存在于const声明中。

维基说:

语法要求:const声明必须有每个声明标识符的初始化器

我认为这不言自明。

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

LexicalBinding :
    BindingIdentifier Initialiseropt
    BindingPattern Initialiser

词法绑定:绑定标识符

如果包含此产生式的LexicalDeclaration的IsConstantDeclaration为 ,则为语法错误true

据我了解,LexicalBinding生产规则不能BindingIdentifier Initialiseropt用于 a ,因此如您所见,const它必须是初始化程序未标记为可选的位置。BindingPattern Initialiser

于 2013-09-05T08:29:36.637 回答
1

有疑问时,请达到规格!

或者在这种情况下,截至今天,建议的Harmony规范

语法要求: ​​const 声明必须有每个声明标识符的初始化器

所以const x;应该是违法的。虽然,当然,实现会有所不同。某些浏览器可能允许您以这种方式将变量初始化为undefined.

于 2013-09-05T08:31:22.223 回答
0

const x = 5;

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

于 2013-09-05T08:20:22.810 回答