TypeError:在 JavaScript 中赋值给常量变量

TypeError:JavaScript 中常量变量的赋值

TypeError: Assignment to Constant Variable in JavaScript

尝试重新分配或重新声明使用const关键字声明的变量时,会发生“赋值给常量变量”错误。

使用 声明变量时const,不能重新分配或重新声明。

赋值给常量变量

下面是错误如何发生的示例。

索引.js
const a = 'bobby'; // ⛔️ TypeError: Assignment to constant variable. a = 'hadz';

let使用而不是声明变量const

要解决“TypeError: Assignment to constant variable”错误,请使用关键字let而不是使用const.

let可以重新分配使用关键字声明的变量。

索引.js
// 👇️ using `let` let a = 'bobby'; a = 'hadz'; console.log(a); // 👉️ "hadz"

我们let在示例中使用关键字来声明变量。

声明为 using 的变量let可以重新赋值,这与声明为 using 的变量相反const

您也可以var以类似的方式使用关键字。但是,var不鼓励在较新的项目中使用。

索引.js
// 👇️ using `var` var a = 'bobby'; a = 'hadz'; console.log(a); // 👉️ hadz

为变量取一个不同的名字

或者,您可以使用const关键字声明一个新变量并使用不同的名称。

索引.js
const a = 'bobby'; const b = a + ' hadz'; console.log(b); // 👉️ "bobby hadz"

我们声明了一个具有不同名称的变量来解决该问题。

这两个变量不再冲突,因此不再出现“赋值给常量”变量错误。

在不同作用域声明const同名变量

您还可以在不同的范围内声明一个const同名变量,例如在函数或if块中。

索引.js
const a = 'bobbyhadz.com'; if (true) { const a = 100; console.log(a); // 👉️ 100 } function example() { const a = [1, 2, 3]; console.log(a); // 👉️ [1, 2, 3] } example(); console.log(a); // 👉️ hello

语句if和函数有不同的作用域,所以我们可以在所有 3 个作用域中声明一个同名的变量。

但是,这会阻止我们从外部范围访问变量。

这可能会造成混淆,并且被认为是一种不好的做法。最好避免在不同范围内声明同名变量。

关键字const不会使对象不可变

请注意,const关键字阻止我们重新分配或重新声明变量,但它不会使对象或数组不可变。

索引.js
const obj = { name: 'Bobby', }; // ✅ Works obj.name = 'Alice'; console.log(obj); // 👉️ {name: 'Alice'} // ⛔️ Error: Assignment to constant variable. obj = {name: 'Tom'};

我们obj使用const关键字声明了一个变量。变量存储一个对象。

name请注意,即使变量是使用 声明的,我们也可以直接更改属性的值const

我们无法将变量重新分配给新值,但是,我们可以直接更改对象的值。

使用数组时的行为是相同的。

索引.js
const arr = ['Bobby']; // ✅ Works arr[0] = 'Hadz'; console.log(arr); // 👉️ ["Hadz"]

即使我们arr使用const关键字声明变量,我们也可以直接更改数组元素的值。

关键字const阻止我们重新分配变量,但它不会使对象和数组不可变。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: