gpt4 book ai didi

javascript - 为什么我可以更改 javascript 中的常量对象

转载 作者:IT王子 更新时间:2023-10-29 02:49:08 24 4
gpt4 key购买 nike

我知道 ES6 还没有标准化,但是一个 lot of browsers currently support JS 中的 const 关键字。

在规范中,它是这样写的:

The value of a constant cannot change through re-assignment, and aconstant cannot be re-declared. Because of this, although it ispossible to declare a constant without initializing it, it would beuseless to do so.

当我做这样的事情时:

const xxx = 6;
xxx = 999;
xxx++;
const yyy = [];
yyy = 'string';
yyy = [15, 'a'];

我看到一切正常:xxx 仍然是 6 并且 yyy[]

但是如果我执行 yyy.push(6); yyy.push(1); ,我的常量数组已经改变了。现在它是 [6, 1] 顺便说一下,我仍然无法用 yyy = 1; 更改它。

这是一个错误,还是我遗漏了什么?我在最新的 chrome 和 FF29 中试过了

最佳答案

文档指出:

...constant cannot change through re-assignment
...constant cannot be re-declared

当你添加到一个数组或对象时,你不是重新分配或重新声明常量,它已经被声明和分配,你只是添加到常量指向的“列表”。

所以这很好用:

const x = {};

x.foo = 'bar';

console.log(x); // {foo : 'bar'}

x.foo = 'bar2';

console.log(x); // {foo : 'bar2'}

还有这个:

const y = [];

y.push('foo');

console.log(y); // ['foo']

y.unshift("foo2");

console.log(y); // ['foo2', 'foo']

y.pop();

console.log(y); // ['foo2']

但这些都不是:

const x = {};
x = {foo: 'bar'}; // error - re-assigning

const y = ['foo'];
const y = ['bar']; // error - re-declaring

const foo = 'bar';
foo = 'bar2'; // error - can not re-assign
var foo = 'bar3'; // error - already declared
function foo() {}; // error - already declared

关于javascript - 为什么我可以更改 javascript 中的常量对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com