是否可以在javascript中的decleration语句之后为const变量分配初始值,如下所示?我已经尝试过,但没有奏效。我想知道是否存在其他任何方式。
const x;
x = 5;
感谢。
答案 0 :(得分:5)
必须在声明时指定常量,之后不能更改。
const x;
x = 2;
console.log(x); // == undefined
const z = 4;
z = 10;
console.log(z); // == 4
答案 1 :(得分:2)
答案 2 :(得分:1)
根据Harmony wiki和ES6 draft,初始值必须出现在const
声明中。
维基说:
语法要求:
设置初始值设定项const
声明必须为每个声明的标识符
这说明了我自己。
草案没有明确说明这个要求,但可以从语法定义中推断出来(如果我理解正确的话。它说:
LexicalBinding :
BindingIdentifier Initialiseropt
BindingPattern Initialiser
和
LexicalBinding : BindingIdentifier
如果包含此作品的 LexicalDeclaration 的 IsConstantDeclaration 为
true
,则语法错误。
根据我的理解,LexicalBinding
生成规则不能BindingIdentifier Initialiseropt
const
,因此它必须是BindingPattern Initialiser
,正如您所看到的,初始值不是{{1}}标记为可选。
答案 3 :(得分:1)
或者就此而言,截至今天,proposed spec的Harmony:
语法要求:const声明必须为每个声明的标识符
设置初始值设定项
所以const x;
应该是非法的。当然,实施方式各不相同。某些浏览器可能会允许您将此变量初始化为undefined
。
答案 4 :(得分:0)
const x = 5;
但这并没有得到广泛支持,即它将在Internet Explorer上失败。适用于谷歌浏览器。
我不建议在javascript中使用const
关键字,因为它没有很好地实现...