如果在JavaScript中导入*作为名称,为什么我可以重新分配常量?
如果我将常量作为整个模块的内容导入,为什么可以重新分配给它?它应该这样工作吗?我以为常数应该是不变的 例如:如果在JavaScript中导入*作为名称,为什么我可以重新分配常量?,javascript,import,export,constants,immutability,Javascript,Import,Export,Constants,Immutability,如果我将常量作为整个模块的内容导入,为什么可以重新分配给它?它应该这样工作吗?我以为常数应该是不变的 例如: // constants.js export const APPLE = 'apple'; // app.js import { APPLE } from 'constants.js'; import * as constants from 'constants.js'; constants.APPLE = 'banana'; console.log(APPLE); //outpu
// constants.js
export const APPLE = 'apple';
// app.js
import { APPLE } from 'constants.js';
import * as constants from 'constants.js';
constants.APPLE = 'banana';
console.log(APPLE);
//output
banana;
我不能直接重新分配常量APPLE
,但我可以重新分配常量.APPLE
,这也会给APPLE
一个新值
当我在Chrome中打印出常量
时,我得到以下输出
//output of constants
{APPLE: "apple", __esModule: true}
APPLE: "banana"
__esModule: true
__proto__: Object
为什么苹果的值不同?关于“我认为常量应该是不可变的”。常量是可变的,但不能重新声明或重新分配。