为什么我不能在JavaScript中声明多个const?

时间:2016-10-29 14:04:10

标签: javascript ecmascript-6

这是正确的语法:

let foo, bar;

这是不正确的

const foo, bar;

为什么?

有没有办法在一个地方声明一些常量,并在另一个地方定义它们?除了约束声明和定义

6 个答案:

答案 0 :(得分:14)

因为必须初始化const声明。这将有效:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="button" style="height: 30px; width: 30px; background: blue"></div>

答案 1 :(得分:11)

普通变量(用varlet声明)可以声明没有值,因为您可以稍后分配它们:

let foo;  // foo has value undefined
foo = 3;  // foo has value 3

但是,您不能对常量执行相同的操作,因为在声明它们之后您无法更改它们的值:

const foo;  // ...?
foo = 3;    // this is not allowed because foo is constant

因此,您必须同时声明并为常量赋值。这个可以一次完成多个consts:

const foo = 3,
      bar = 8; // this works fine, foo and bar are both constants

没有办法在一个地方宣布一个const并将其分配给另一个地方。您必须改为使用varlet

答案 2 :(得分:3)

正如 Sean Sobey 在他的回答中所说,这是因为 const 值必须用值声明。

我想补充一点,您可以在一个语句中声明多个 const 值,例如

const [xMin, xMax, yMin, yMax] = [-2, 2, -1.5, 1.5];

注意(与此处的其他答案相反)const 不是一成不变的,这一点很有用。看: https://softwareengineering.stackexchange.com/questions/149555/difference-between-immutable-and-const

例如:

const item = { price: 10 };
item.price= 15;
console.log(item.price);

这将输出 15 的更新价格。

答案 3 :(得分:2)

你可以,但是是一个常数,所以你必须在声明中为它们分配一个值

答案 4 :(得分:0)

const在声明时会被赋予一个值,因为它是只读的。

答案 5 :(得分:0)

分配后不能更改

const值。您正在尝试现在声明它以稍后更改它,这不适用于const。 此问题的解决方案是使用letvar声明它。