为什么node.js允许更改指定为常量的模块(或对象)?
例如,允许这样做:
const EXPRESS = require('express');
EXPRESS.someProperty = 'some value';
但这不是:
const MYCONST = '123';
MYCONST = '456';
答案 0 :(得分:6)
const
表示您无法更改引用本身,而不能更改引用所指向的内容。
const a = { name: 'tom' };
// you cannot change the reference (point a to something else)
a = 5; // this is an error
// but you can change the value stored at that reference with no problem
a.name = 'bob';
答案 1 :(得分:3)
const不会使对象变为不可变,因此您可以更改对象本身但不能将另一个对象分配给该引用
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/const
答案 2 :(得分:2)
来自文档:
const声明创建对值的只读引用。它 并不意味着它拥有的值是不可变的,只是变量 标识符无法重新分配。例如,如果内容是 一个对象,这意味着对象本身仍然可以改变。
这不是特定于节点的,它是Javascript规范的一部分。引用EXPRESS
是常量,当您使用const
声明时,不允许重新分配引用。
const EXPRESS = require('express');
EXPRESS = 'something else';
也会失败