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
阻止我们重新分配变量,但它不会使对象和数组不可变。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: